云网牛站
所在位置:首页 > Linux编程 > 鸿蒙HarmonyOS应用开发只支持Java与JS语言,不支持Python

鸿蒙HarmonyOS应用开发只支持Java与JS语言,不支持Python

2021-06-05 16:15:08作者:linux人稿源:harmonyos站

当前华为鸿蒙HarmonyOS应用开发只支持Java与JS语言,其它的语言比如Python、C++都不支持,如果想开发鸿蒙OS,当前只能学习Java与JS了。以下将附上Java开发常见问题和JS开发常见问题解答。关于HarmonyOS开源地址,可看华为鸿蒙HarmonyOS开放源代码OpenHarmony的地址公布,附获取方法

鸿蒙HarmonyOS应用开发只支持Java与JS语言,不支持Python

 

附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)来设置圆角。

示例及结果参考如下:

鸿蒙HarmonyOS应用开发只支持Java与JS语言,不支持Python

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的正确使用方式,示例及结果参考如下:

鸿蒙HarmonyOS应用开发只支持Java与JS语言,不支持Python

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”目录下。

鸿蒙HarmonyOS应用开发只支持Java与JS语言,不支持Python

3、使用<image>标签引入的本地图片无法加载

使用<image>标签引入本地图片,但图片无法加载的可能情况有三种:

1]、没有给图片设置宽度和高度,需要在对应的“page”目录下的css样式文件中设置图片的宽高。使用<image>标签的图片不会自动缩放,图片宽高超过组件的宽高会自动截取。

2]、图片引入路径错误。图片引入的路径必须是项目编译后的静态文件的路径。

3]、在导入图片或添加/删除页面后没有重新编译。

4、网络图片无法加载

使用图片资源时,应用可以成功加载common路径下的本地图片,但无法加载网络图片。检查是否申请相关权限ohos.permission.INTERNET,进行网络连接。

 

相关主题

华为鸿蒙HarmonyOS 2相比谷歌Android有6大优点,附介绍

精选文章
热门文章