当前华为鸿蒙HarmonyOS应用开发只支持Java与JS语言,其它的语言比如Python、C++都不支持,如果想开发鸿蒙OS,当前只能学习Java与JS了。以下将附上Java开发常见问题和JS开发常见问题解答。关于HarmonyOS开源地址,可看华为鸿蒙HarmonyOS开放源代码OpenHarmony的地址公布,附获取方法。
附1:Java开发常见问题解答 1、查询设备支持的硬件/软件功能 应用通过调用IBundleManager接口类中的getSystemAvailableCapabilities方法,可以查询设备支持的硬件/软件功能列表。具体的功能定义可以通过ohos.utils.CapabilityConstants类查询。 2、查询设备是否支持某个硬件/软件特性 应用通过调用IBundleManager接口类中的hasSystemCapability方法,可以查询设备是否支持某个硬件/软件功能。具体的功能定义可以通过ohos.utils.CapabilityConstants类查询。 3、图片显示不全 父类容器大小不能小于子组件容器大小。 4、fp、vp、px的关系 vp(virtual pixels)表示虚拟像素,fp(font-size pixels)表示字体像素。 5、Image组件设置src 以图片资源“cat.png”为例,先将图片添加在“src > main > resources > base > media”目录下。 在xml文件中进行设置: <Image ohos:id="$+id:img_1" ohos:image_src="$media:cat.png" /> 在Java文件中进行设置: Image img = new Image(getContext()); img.setPixelMap(ResourceTable.Media_cat); 6、在xml布局文件中引用另一个布局文件 可以使用include关键字,示例参考: <include ohos:layout="$layout:include_layout" ohos:height="200vp" ohos:width="500vp"> </include> 7、PopupDialog组件中弹框背景的圆角和arrow的相关设置方法 arrow与弹框背景是一个整体,不支持单独设置箭头颜色,但可以通过setCustomComponent在弹框中设置自定义组件,将自定义组件的背景与整体弹框背景区别设置,达到间接实现箭头颜色和弹框背景颜色不一致的目的。 弹框背景可以通过popupDialog.setCornerRadius(60)来设置圆角。 示例及结果参考如下:
ability_main.xml代码为: <?xml version="1.0" encoding="utf-8"?> <DirectionalLayout xmlns:ohos="http://schemas.huawei.com/res/ohos" ohos:height="match_parent" ohos:width="match_parent" ohos:orientation="vertical"> <Button ohos:id="$+id:btn_popup" ohos:height="match_content" ohos:width="match_content" ohos:background_element="$graphic:btn_normal" ohos:layout_alignment="horizontal_center" ohos:margin="8vp" ohos:padding="8vp" ohos:text="popup dialog" ohos:text_color="white" ohos:text_size="14fp"/> </DirectionalLayout> custom_dialog.xml内代码为: <?xml version="1.0" encoding="utf-8"?> <DirectionalLayout xmlns:ohos="http://schemas.huawei.com/res/ohos" ohos:height="match_parent" ohos:width="match_parent" ohos:background_element="$graphic:dialog_yellow" ohos:orientation="vertical"> <Text ohos:id="$+id:dialog_text" ohos:height="match_content" ohos:width="match_parent" ohos:padding="8vp" ohos:margin="8vp" ohos:multiple_lines="true" ohos:text="Hello" ohos:text_size="16fp"/> </DirectionalLayout> dialog_yellow.xml内代码为: <?xml version="1.0" encoding="UTF-8" ?> <shape xmlns:ohos="http://schemas.huawei.com/res/ohos" ohos:shape="rectangle"> <solid ohos:color="yellow"/> <!--自定义组件背景色为黄色--> <corners ohos:radius="15vp"/> </shape> btn_normal.xml内代码为: <?xml version="1.0" encoding="UTF-8" ?> <shape xmlns:ohos="http://schemas.huawei.com/res/ohos" ohos:shape="rectangle"> <solid ohos:color="#1E90FF"/> <corners ohos:radius="10vp"/> </shape> java中的相关代码为: Component associated = findComponentById(ResourceTable.Id_btn_popup); associated.setClickedListener(c -> { PopupDialog popupDialog = new PopupDialog(getContext(), associated, 500, 300); popupDialog.setHasArrow(true); // 设置是否有箭头 popupDialog.setArrowSize(50, 30); // 设置箭头的宽高 popupDialog.setArrowOffset(200); // 设置箭头的偏移量 popupDialog.setCornerRadius(60); popupDialog.setBackColor(Color.RED); //箭头与弹框整体背景色为设置为红色 popupDialog.setMode(LayoutAlignment.LEFT); Component component = LayoutScatter.getInstance(this).parse(ResourceTable.Layout_custom_dialog, null, false); popupDialog.setCustomComponent(component); popupDialog.show(); 8、PopupDialog.setArrowOffset设置无效,始终居中 如果设置了popupDialog.setMode(LayoutAlignment.CENTER),setArrowOffset则设置无效,会始终居中,当模式设置为左对齐或右对齐才会生效。 9、Element.drawToCanvas无法创建一个新的Element drawToCanvas是在Canvas上绘制一个Element,并不是去创建一个新的Element。drawToCanvas的正确使用方式,示例及结果参考如下:
ShapeElement shapeElement = new ShapeElement(this, ResourceTable.Graphic_button_normal); shapeElement.setBounds(0, 0, 300, 300); Component.DrawTask drawTask = (component, canvas) -> shapeElement.drawToCanvas(canvas); Component component = findComponentById(ResourceTable.Id_component_test); component.addDrawTask(drawTask);
附2:JS开发常见问题解答 1、使用npm引入三方包 方法一: 打开Terminal窗口,通过如下指令进入到entry目录。 cd entry 以引入“dayjs”为例,执行以下指令进行安装。 npm install dayjs --save 在对应的js文件中直接引用。 import dayjs from 'dayjs'; 方法二: 打开工程目录下的entry目录,找到该目录下的package.json文件。 在package.json文件中写入想要安装的三方npm,以“dayjs”为例,示例如下: { "dependencies": { "dayjs": "^1.10.4", } } 打开Terminal窗口,通过如下指令进入到entry目录。 cd entry 执行指令进行安装。 npm install 在对应的js文件中直接引用。 import dayjs from 'dayjs'; 说明:仅支持引入js三方包。 2、多媒体资源加载失败 检查多媒体资源的放置路径,以视频文件“test_video.mp4”为例,需要将其放置到“js > default > common”目录下。
3、使用<image>标签引入的本地图片无法加载 使用<image>标签引入本地图片,但图片无法加载的可能情况有三种: 1]、没有给图片设置宽度和高度,需要在对应的“page”目录下的css样式文件中设置图片的宽高。使用<image>标签的图片不会自动缩放,图片宽高超过组件的宽高会自动截取。 2]、图片引入路径错误。图片引入的路径必须是项目编译后的静态文件的路径。 3]、在导入图片或添加/删除页面后没有重新编译。 4、网络图片无法加载 使用图片资源时,应用可以成功加载common路径下的本地图片,但无法加载网络图片。检查是否申请相关权限ohos.permission.INTERNET,进行网络连接。
相关主题 |