392sb.com:【官方总结】HarmonyOS应用开发常见问题FAQ

本文地址:http://phm.ib776.com/harmonycommunity/article/details/110470950
文章摘要:392sb.com,耳中世爵娱乐EB棋牌、935tyc.com、诺亚体育棋牌官网里通外国巴不得他不得好死而现在所有势力。

目录

HarmonyOS开发基础类问题FAQ??

JS UI开发类问题FAQ?

Java UI开发类问题FAQ??

?媒体、数据管理、权限类问题FAQ?


HarmonyOS开发基础类问题FAQ??


1??????Q:需要使用什么工具进行HarmonyOS应用开发?

A:可使用HUAWEI DevEco Studio(简称DevEco Studio)进行HarmonyOS应用开发。

1>??DevEco Studio使用指南详见开发者文档

http://phm.ib776.com/759/cn/docs/documentation/doc-guides/software_install-0000001053582415

2>??DevEco Studio使用常见问题详见开发者论坛置顶帖

http://www.174.1557744.com/consumer/cn/forum/topic/0202363427916790029?fid=26

2??????Q:HarmonyOS应用开发支持的系统有哪些?

A:当前DevEco Studio仅支持Windows和Mac版本,暂不支持linux版本。

3??????Q:当前哪些设备支持HarmonyOS应用开发?

A:HarmonyOS开放的范围是面向128M以下内存的IoT设备,预计2021年会逐步上市携带HarmonyOS系统的手表、大屏和手机(PC暂时没有计划),敬请关注官网和2021年HDC大会信息,当前您可以使用模拟器调试运行。

4??????Q:HarmonyOS的API哪里可以查看?

A:在HarmonyOS Developer官网可以访问HarmonyOS的API,详见http://www.ib776.com/126/cn/docs/documentation/doc-references/overview-0000001054119934

5??????Q:如何快速入门HarmonyOS应用开发?

A:在HarmonyOS Developer官网有详细的入门指导,详见http://phm.ib776.com/453/cn/docs/documentation/doc-guides/start-overview-0000000000029602

6??????Q:HarmonyOS SDK是否提供源码?

A:?Harmony OS SDK不提供源码。其他源码详见http://phm.ib776.com/openharmony

7??????Q:HarmonyOS?应用开发支持哪些开发语言?

A:HarmonyOS 应用开发支持JS和Java,目前不支持python开发哦。

?

JS UI开发类问题FAQ?

1??????Q:JS UI框架开发哪里有详细的开发指导

A:JS UI框架介绍详见?http://www.527.1447722.com/cn/docs/documentation/doc-guides/ui-js-overview-0000000000500376

JS API参考可详见http://www.ib776.com/996/cn/docs/documentation/doc-references/js-apis-overview-0000001056361791

2??????Q:HarmonyOS JS开发会影响其运行性能吗?是类似于React-Native这样的UI框架的运行原理吗?

A:HarmonyOS的JS和react-native原理不一样。底层是一套UI自渲染框架,可跨平台?(比如PC端预览的效果和手表/TV端是同样的渲染路径,效果一致)。性能方面,目前一些典型的场景性能(比如图库、电商、长列表)基本都可以达到满帧。但由于JS语言本身性能的限制,不建议有复杂的JS逻辑运算。HarmonyOS也会持续进行整体性能相关的优化,欢迎持续关注。

3??????Q:如何实现页面滑动?

A:实现页面滑动目前有三种方式:

1、scroll(根组件大小超过屏幕的大小即自动实现scroll效果);

2、list;

3、swiper。

开发者可以参考JS API查看三者的区别,并加以使用。详见http://www.717.bo622.com/cn/docs/documentation/doc-references/lite-wearable-container-swiper-0000001060406955

4??????Q:list如何滚动到某个item?

A:?通过list的scrollto方法滚动到指定的item,参数是目标item的index。Index参数可以通过scrollend事件获取或者开发者指定。

5??????Q:chart组件使用问题:在智慧屏上,gauge量规图很简单就实现了。但是bar柱状图和line线图却显示不出来,要怎么使用呢?

A:?chart图标组件用于呈现线形图、柱状图界面。其使用可参看:http://phm.ib776.com/cn/docs/documentation/doc-references/lite-wearable-basic-chart-0000001060674856

chart使用示例代码如下:

? ?hml代码片段:

? ?<chart

? ? ? ? ? ? type="line"

? ? ? ? ? ? ref="mychart"

? ? ? ? ? ? style="width:300px;height:200px;"

? ? ? ? ? ? options="{{option}}"

? ? ? ? ? ? datasets="{{dataset}}">

? ? </chart>
?

? ? js代码片段:

? ? data: {

? ? ? ? title: '日历插件引用',

? ? ? ? option:{

? ? ? ? ? ? xAxis: {display:true,color:"#FFFFFF",max:100,axisTick:20},

? ? ? ? ? ? yAxis: {display:true,color:"#FFFFFF",max:35},

? ? ? ? ? ? series: {lineStyle:{smooth:true,width:"2px"},loop:{margin:100}}

? ? ? ? },

? ? ? ? dataset:[{strokeColor:"#A52A2A",data:[12,14,18,10,24,18,12,14,18,10,24,18,12,14,18,10,24,18]}]

? ? }

6??????Q:JS?UI支持async和await语法吗?

A:JS UI支持async和await语法,使用时需要在js文件头部加入

const injectRef = Object.getPrototypeOf(global) || global;

injectRef.regeneratorRuntime = require('@babel/runtime/regenerator');

7??????Q:JS UI开发中如何绑定input的值到data?

A:目前ACE框架还不支持双向绑定,建议通过监听input的onchange事件来实现input值和data值的同步变化 。

示例代码如下:

<input type="text" value="{{num1}}}" "input1Change"></input>

8??????Q:如何使用非Index的页面作为entry,修改entry?

A:对于wearable工程和TV工程,首页的名字可以不是index, pages配置列表中的第1个page既是首页;对于litewearable工程,首页的名字必须是index

9??????Q:列表渲染中的行内样式如何动态绑定

列表渲染中的行内样式如何动态绑定, 现在行内样式不支持?style = "color:{{$item.color}}"?这种写法, 如果要对不同的item渲染不同的颜色该怎么办?

A:<text style="color:{{$item.color}}">{{$item.name}}</text>这样写没错,但是在js data中定义color的时候不能用枚举,要用十六进制颜色码。

10???Q:JS UI开发时在config.js中配置多个js实例,那么页面怎么在多个js实例中跳转?

A:可以在页面的js文件中实现页面的跳转逻辑。调用router.push()接口将uri指定的页面添加到路由栈中,即跳转到uri指定的页面。在调用router方法之前,需要导入router模块。

可参看者文档中关于页面路由的使用介绍,详见http://www.751.3456466.com/cn/docs/documentation/doc-references/lite-wearable-routes-0000001056203160

11???Q:JS UI框架下,video组件如何播放HLS?video组件直接src饮用m3u8地址的话,显示打开文件失败。个别点播的m3u8地址正常,大部分点播和直播都不行。

A:目前video组件没有相关的解码流,所以还不支持video组件利用src直接引用m3u8直播,请关注后续能力的开放。

12???Q:图片资源怎么加载,在hml里面直接设置image的src路径="/image/3.png"无法显示图片。

A:default目录下建一个common文件夹,把图片放进去。然后<img src="/common/xxx.jpg">?就可以了。

可查看开发指南的例子,链接:http://www.007.8442200.com/cn/docs/documentation/doc-guides/ui-js-building-ui-layout-image-0000000000561509

13???Q:组件stack怎么使用?

A:stack组件相当于android的RelativeLayout?相对布局。stack组件的使用可参看API文档,连接:http://phm.ib776.com/cn/docs/documentation/doc-references/js-components-container-stack-0000000000611521

14???Q:picker自定义选择器是哪个?

A:picker自定义选择器使用picker-view组件。

15????Q:JS UI框架中怎么在JS文件中修改dom元素的style?

A:如果style样式在hml中已经写死,比如style="width: 10px",这种方式是无法动态修改的;如果style样式在hml中动态配置,如style="width: {{width}}",可以在js文件中动态修改属性值。

16???Q:组件的方法和事件的区别?

A:事件是是需要监听并且用户触发才会生效,如:

click? ? ? ? ? ? ?点击动作触发事件

longpress? ? ??长按动作触发事件

swipe? ? ? ? ? ?向上快速滑动触发事件

组件的方法是可以主动去调用的,调用立即生效,如:

list.scrollTo({

? ? index:number

})

17???Q:JS开发框架中,list组件支持Map类型的动态数据绑定吗???

A:list组件支持Map类型的动态数据,如下就是绑定动态数据样式:

<div vclass = "container">
 ??? <list class = "todo-wraper">
 ??????? <list-item for = "{{todolist}}" clasee = "todo-item">
 ??????????? <text class = "todo-title">{$item.title}</text>
 ??????????? <text class = "todo-title">{$item.data}</text>
 ??????? </list-item>
 ??? </list>
 </div>

18???Q:swiper组件设置loop=“true”自动播放不生效

A:loop用于配置是否循环播放,autoplay才是用于配置子组件是否自动播放,swiper组件的使用可参看API:http://www.296.sg661.com/cn/docs/documentation/doc-references/js-components-container-swiper-0000000000611533

19???Q:自定义控件中如何刷新canvas?

A:如customView为自定义组件,刷新组件方法如下:

customView.invalidate();

?

Java UI开发类问题FAQ??

1??????Q:Java UI框架开发哪里有详细的开发指导

A:Java?UI框架介绍详见http://www.715.8441133.com/cn/docs/documentation/doc-guides/ui-java-overview-0000000000500404

Java?API参考可详见http://www.ib776.com/816/cn/docs/documentation/doc-references/overview-0000001054518434

2??????Q:XML布局增加一个图片怎么实现?

A:资源引用方式:?$media:icon。

?注意??Android是@media/xxx;?HarmonyOS是?$media:xxx。资源文件的使用介绍可详见:http://phm.ib776.com/cn/docs/documentation/doc-guides/basic-resource-file-example-0000001051733014

3??????Q:TV程序完成后UI上方的TitleBar如何隐藏?

A:在confi.json中添加如下描述:
? ?"metaData":{
? ? ? ? "customizeData":[
? ? ? ? ? ? {
? ? ? ? ? ? ? ? "name": "hwc-theme",
? ? ? ? ? ? ? ? "value": "androidhwext:style/Theme.Emui.NoTitleBar",
? ? ? ? ? ? ? ? "extra":""
? ? ? ? ? ? ?}
? ? ? ? ]
? ? }

4??????Q:整个Page的页面(Window)如何设置大小(类似windows的窗口的大小修改)?

A:在布局文件中配置ohos:width?和?ohos:height即可设置控件的高和宽。

?Java UI的使用指导可参见http://www.360.sbw6677.com/cn/docs/documentation/doc-guides/ui-java-overview-0000000000500404

5??????Q:跳转到一个新的AbilitySlice,如何传递一个对象类型的参数?

A:在Intent中,将要传递的对象序列化了就可以了。网络上有视频讲解,可以参考:http://www.640.8667744.com/video/BV12K411P7Mx

6??????Q:HarmonyOS?应用日志怎么打印?

A: 日志打印的示例代码如下:

static final HiLogLabel label = new HiLogLabel(HiLog.LOG_APP, MY_MODULE, "MY_TAG");?

HiLog.warn(label, "Failed to visit %{private}s, reason:%{public}d.", url, errno);

? ?详情可以参考下面的文档:

http://www.249.cao802.com/cn/docs/documentation/doc-references/hilog-0000001054678857

?

7??????Q:HarmonyOS toast怎么用?

A:关于Toast的使用,也建议看看源码,有很多使用小技巧,这里先给一个最简单的:

? ? ToastDialog toastDialog = new ToastDialog(this);

? ? toastDialog.setText("发生错误").setGravity(1).setDuration(1000).show();

可参看API,详见:http://www.282.cao857.com/cn/docs/documentation/doc-references/toastdialog-0000001054440045

?

8??????Q:HarmonyOS Java模式的RadioButton组件,xml中为啥没有?checked属性?

A:sdk2.0后?xml中没有了checked属性,如果使用,可以在java代码中实现,radioButton.setChecked(true);

9??????Q:Button样式怎么添加?

Button样式很丰富,什么圆角的,直角的,圆形的等等,这些样式要怎么添加进来还有编写格式要求。

? ? ? ?<Button
? ? ? ?ohos:id="$+id:button"
? ? ? ?ohos:width="match_content"
? ? ? ?ohos:height="match_content"
? ? ? ?ohos:left_margin="88vp"
? ? ? ?ohos:right_margin="88vp"
? ? ? ?ohos:top_margin="70vp"
? ? ? ?ohos:text_size="19fp"
? ? ? ?ohos:text="点我"
? ? ? ?ohos:background_element="$graphic:color_blue_element" //按照网上提示,编译报错
? ? ? ?ohos:text_color="white"
? ? ? ?/>

A:在app目录下resources/base文件目录下创建graphic目录,如果要实现圆角等 需要编写xml文件 例如新建bg_common_unpress_btn.xml?如下:

<?xml version="1.0" encoding="UTF-8" ?>

<shape xmlns:ohos="http://www.336.fu855.com/res/ohos"

? ? ? ?ohos:shape="rectangle">

? ? <corners?ohos:radius="100"/>

? ? <solid?ohos:color="#2E9EED"/>

</shape>

shape类型与android的shape类型相似。使用方式为?ohos:background_element="$graphic:bg_common_unpress_btn"。
????可以参看开发者文档中的使用示例,链接:http://www.ib776.com/414/cn/docs/documentation/doc-guides/start-first-page-0000000000038014

10??Q:HarmonyOS?UI界面网格布局怎么设置

HarmonyOS UI界面网格布局要怎么开发?需要同时满足一下3点要求

1.数据列或者行超出屏幕范围,要怎么设置列表可滚动,才能滑动屏幕查看超出部分?

2.怎么让不同行的相同列等宽?也就是需要列对齐

3.需要间隔一行设置整行背景色

我使用ListContainer和Tablelayout组件都实现不了,请问要如何实现?

A:

1.给Tablelayout高度或者宽度设置为match_content(如果你的列表是上下滑动的,那么高度就设置match_content),超出的部分能够自动滚动

2.列对齐是需要开发者自己实现的,给Tablelayout添加元素的时候,元素的大小需要开发者自己设置。可以使用可以使用weight来分割

3.?这个也需要开发者自己实现,实现的方式,比如:

for (i?=0?;?i?<?length;?i?++)?{

???if?(i?%?2 ==?0)?{

????????Component.setBackground(xxx);

????}?{

????????Component.setBackground(xxx);

????}

????Tablelayout.add(Component);

}

?

11???Q:JAVA UI中有没有在画布上绘制文字的方法?

A:Java中使用Canvas来绘制文字,可以使用Canvas下的drawText()这个方法来实现。

Canvas的使用可参看API:http://phm.ib776.com/cn/docs/documentation/doc-references/canvas-0000001054238731

?

12???Q:HarmonyOS组件滚动布局怎么设置?需要水平和垂直方向超出屏幕时都可以滚动

A:ScrollView支持竖直方向滑动,内嵌一个layout,orientation设置为vertical;

NestedScrollView支持水平方向滑动,内嵌一个layout,orientation设置为horizontal。

?

13???Q:HarmonyOS系统中java如何调用服务器接口发起请求?

A:HarmonyOS SDK内网络请求,首先申请harmonyos.permission.INTERNET权限 。HarmonyOS使用NetManager来进行网络管理,获取其单例对象,通过openConnection()来打开一个连接对象。后面的处理方式和JAVA? URL网络请求方式一致。使用JS开发应用,需要引入fetch接口,使用JSON来发送请求。由于默认http协议,要使用http,需要在config.json中配置

"deviceConfig": {

? ? "default": {

? ? ? ...

? ? ? "network": {

? ? ? ? "cleartextTraffic": true

? ? ? }

? ? }

? }

14???Q:下拉框的选择器Picker,应该怎么设定值呢?

A:通过如下基础组件实现选择器:

1>Picker提供自定义选择器,选择器展示内容设置为String数组;

2>DatePicker提供默认日期选择器;

3>TimePicker提供默认时间选择器;

支持选中事件监听,选择元素变更事件监听。

15???Q:非UI线程如何更新UI?

在非UI线程中如何更新UI??在一个新的线程中试图更新Text的文本,但是更新失败,如果更新后用鼠标拖动一下Text控件,则触发更新操作,是不是需要把更新操作写到UI线程中去执行?具体是哪个API?

A:?可以通过任务分发器TaskDispatcher来实现

?

TaskDispatcher?uiTaskDispatcher?=?getUITaskDispatcher();

?

uiTaskDispatcher.asyncDispatch(()?->?text.setText("Hello,Harmony!"));

TaskDispatcher的开发指导,详见:http://www.521.ib669.com/cn/docs/documentation/doc-guides/thread-mgmt-guidelines-0000000000032130

?TaskDispatcher的API,详见:http://www.382.1447744.com/cn/docs/documentation/doc-references/taskdispatcher-0000001054518794

16???Q:Java UI开发框架中Image控件如何切换图片?

A:Image的setImageAndDecodeBounds方法可以改变显示的图片

?Image控件API,详见http://phm.ib776.com/cn/docs/documentation/doc-references/image-0000001054120045

17???Q:JAVA UI开发下拉列表组件是哪个?

A:Java UI框架目前不支持下拉列表组件

18???Q:怎么样通过ResourceTable获取资源数据?如Text中setTextColor,setTextSize方法,想要引用资源数据中的值该怎么处理,有办法做到像Android那样可以通过资源文件getResources就可以根据name获取到对应的值引用的。

A:使用ResourceManager.getElement(ResourceTable.String_xxx).getXXX()来获取相应的资源。

具体可以参考ResourceManager相关的api文档:http://phm.ib776.com/cn/docs/documentation/doc-references/resourcemanager-0000001054358863

19???Q:点击跳转到新页面,返回后,为什么点击事件不再起作用?

A:页面跳转或者被覆盖以后,会进入onInactive,此时资源会释放掉,再回去onActive的时候,需要重新获取资源,建议按照如下方式进行调用:

? ? ? ? button = (Button) findComponentById(ResourceTable.Id_button);

? ? ? ? button2 = (Button) findComponentById(ResourceTable.Id_button2);

? ??将上面两行代码放在onActive()中,这样不管怎么跳转,资源都不会失效

?

?媒体、数据管理、权限类问题FAQ?

一、媒体

1??????Q:如何用Java播放本地视频?

A:开发者你好,在HarmonyOS开发者文档里面有详细的关于视频播放的开发指导,可详见http://phm.ib776.com/cn/docs/documentation/doc-guides/media-video-player-0000000000044178

2??????Q:参看AudioDeviceDescriptor的API编写代码播放一段mp3音频时,总是没有声音

A : AudioDeviceDescriptor不是支持音视频播放的接口类。目前HarmonyOS提供的可播放mp3格式的sdk接口是harmonyos.media.player.Player。示例代码如下:

try (FileInputStream in = new FileInputStream(new File(PLAYER_TEST_FILE))) {

? ? ?FileDescriptor fd = in.getFD();

? ? ?Source source = new Source(fd);

? ? ?Player impl = new Player();

? ? ?impl.setSource(source);

? ? ?impl.prepare();

? ? ?impl.play();

?} catch (IOException e) {

? ? ?// ...

?}

可在HarmonyOS开源API中查阅次API用法.

二、数据管理

1??????Q:HarmonyOS?hap怎么访问sqlite数据库?

A:开发者你好,在HarmonyOS开发者文档里面有详细的关于HarmonyOS关系型数据库的介绍及使用,详见:http://www.ib776.com/27/cn/docs/documentation/doc-guides/database-relational-guidelines-0000000000030051

三、权限

1??????Q:通过get请求访问网络失败,提示Attempt to invoke virtual method,怎么解决?

A:在config.json中配置申请harmonyos.permission.ACCESS_NETWORK_STATE权限

2??????Q:config.json文件里reqPermissions应该配置在哪个地方?

A:你好,开发者文档中“开发基础知识”有介绍config.json各个字段的信息,详见表module内部结构,希望可以帮到您。

链接:http://www.329.ib515.com/cn/docs/documentation/doc-guides/basic-config-file-elements-0000000000034463

3??????Q:使用网络图片,运行应用无法加载图片,但是用本地化图片(使用common路径),应用成功加载图片

A:加载网络图片需要授权:ohos.permission.INTERNET

已标记关键词 清除标记
申博投注线上现金网登入 申博轮盘开户网登入 世爵会员存款 拉斯维加斯赌场银联卡网上娱乐场 百益彩票游戏
ek娱乐棋牌中国总代理 sb.cc 威尼斯人金龙棋牌 顶尖娱乐棋牌娱乐 永乐娱乐欧博
88娱乐棋牌883 tyc57.com 298sb.com 玉和娱乐棋牌网址 188金宝博游戏AG捕鱼王
皇冠国际娱乐官网 格林娱乐棋牌开户 新葡京官网登入 云鼎国际娱乐ag棋牌 钻石娱乐棋牌娱乐