【答疑汇总】HarmonyOS组件的分布式适配和应用畅想
1、开发板是什么级别,类似51单片机,ESP8266或nanopi之类?
答:本次直播抽奖的WIFI Iot智能家居套件是可以运行鸿蒙OS的开发版套件,采用3861芯片。比51单片机的算力要强很多。
2、画的组件有点击或者触摸事件?
答:单击或触摸事件需要通过ClickListner和TouchEventListner实现。
3、老师,可以帮忙整理下代码结构和前后互掉逻辑吗?谢谢🙏
答:可以的,我会近期理顺以下发到51CTO论坛中。
4、和直接AI camera C++源码控制的LCD显示有什么联系
答:不好意思,这个问题我暂时不太了解,不能够给出准确的回答。
5、DevEcoStudio里用js写的UI需要用自定义组件实现?
答:JS UI中也有很多预设的组件类型可以直接使用,但是对于某些特别需求下也可以通过自定义组件来实现组件功能。
6、RoundProgressBar 可以实现点击调整,或者拖动调整吗
答:不可以的。
7、为什么鸿蒙FA要区分exampleAblity和exampleAbilitySlice两个类,基于什么思路设计的?
答:Ablity和AbilitySlice是两个概念,分别有点类似于android中的Activity和Fragment,但是也并不完全一样。同一个界面中,只能显示1个AbilitySlice,而Fragment可以显示多个。
Ability是鸿蒙应用程序开发的基本单元,这么设计是为了能够将功能相关的界面组合在1个Ability之中,方便应用程序在多个设备之间的互相调用。
8、控件自绘的流程和Vc 的gdi 是不是一样的原理呢
答:原理并不完全一样,但是似乎也可以这么类比,毕竟都需要高级的绘图方法来绘制我们想要的界面功能。
9、鸿蒙的界面开发和安卓,web的界面开发有什么相同和不同的地方呢
答:鸿蒙的UI开发分为两类:Java UI和JavaScript UI。Java UI与Android UI开发非常类似。JavaScript UI与Web界面开发非常类似。
从技术实现上,差别不大,但是仍然需要开发者熟悉鸿蒙UI中各个组件的用法。
10、董老师好,请问一下startAbility() 用到的ElementName 和 OperationBuilder 有什么区别
答:通过ElementName 和OperationBuilder 都可以进行Ability的跳转,只是ElementName 可以序列化,而OperationBuilder 不可以。
11、从你了解的看,南向和北向开发联调估计什么时候可以进行?
答:这个估计还没有确切的日期。
12、"从https://harmonyos.51cto.com/posts/2798下载的代码无法运行,提示* What went wrong:
Execution failed for task ':entry:preBuild'.
Check if 'storeFile' is configured correctly, it can't be null or empty.为啥?"
答:可以加将entry的build.gradle中的签名部分删除试一下。
这个问题我已经在上面的帖子中回复了,请查看哦。
13、对于有多年嵌入式C开发基础,刚学习JAVA但是没android基础的开发者,对于鸿蒙应用开发有什么建议和注意事项?
答:首先,应当学习好Java语言,因为毕竟和C语言区别比较大(面向对象)。然后,可以适当的学习和参考Android一些资料,毕竟鸿蒙OS和Android在开发上比较类似。
14、鸿蒙应用沙箱和安卓类似,但是官方文档没有写如何通过类似FileProvider来给其他应用共享文件,现在访问SD卡的路径都是没有权限,无法直接通过文件路径生成的uri访问,请问有没有什么其他方法?
答:不好意思,这个问题我暂时不太了解,不能够给出准确的回答。我近期研究一下,然后在51CTO论坛中给您回复。
15、是不是说JS写界面,Java写逻辑,这种搭配设备的兼容性更好?
答:在一定层面上可以这么说。例如在轻量化穿戴设备上,只能通过JS设计用户界面,但是无法直接运行Java的逻辑代码。这时候可以通过分布式能力,远程调用手机等其他设备的Java逻辑代码(Action)。
16、地图可以集成各个地图服务商的SDK吗?如何来做
答:绝大多数的地图服务商都是闭源的SDK,这种情况下并不能集成。但是多数服务商都通过切片的形式提供地图接口,这样的话我们就可以轻松调用这些地图了。
17、鸿蒙的布局和组件相对安卓有哪些主要改进和优势?对应软总线有哪些特色的布局和组件?
答:改进:提供了很多原子化布局能力和自适应功能。例如,可以通过AdaptiveBoxLayout来进行自适应的布局,这一点非常有特色。
软总线是底层技术,不太涉及布局和组件的设计。
18、请问Java和js在编程方法和应用领域主要区别是什么?各自的优势如何
答:Java提供了细粒度的UI接口,采用命令式编程范式,并且提供了最为丰富的API。JavaScript提供了高层UI描述,采用声明式编程范式,目前其API较为有限。事实上,开发者可以采用混合编程的方式,同时使用Java和JavaScript进行应用程序设计。例如,可以采用Java语言进行功能类模块的编程,实现业务逻辑,使用JavaScript语言进行界面编程,实现数据内容的展示。
19、单纯的程序员,弄出来的app很丑,鸿蒙控件有没有提供几套皮肤可以切换呢?比如,亮色的皮肤,暗色的皮肤。谢谢老师!
答:鸿蒙OS中是存在主题(Theme)功能的,但是目前其相关的API似乎并没有完全公开,还需要各位开发者等待。
20、老师你好,我想问问有没有c应用相关的课程,这个分布式是否局限于Java应用
答:这里的C应用指的是C语言开发的应用程序的。目前鸿蒙OS应用程序开发所能够使用的语言为Java、JavaScript和C++。但是C++通常应用在性能要求高的逻辑代码中,不能够设计用户界面。
从UI层面,分布式能力不仅限于Java应用,也支持JavaScript应用。
21、董老师,我看qq群里面好多人都是想用js开发app,是不是因为java的控件库数量少,而js控件库数量丰富?
答:目前来看,Java和JavaScript都提供了基础的组件(控件)库,但是好像数量都基本够用但并不丰富。我觉得大家可以根据自己的知识结构和喜好选择Java和JS语言。不过JS语言的API目前并不全面,有些具体的功能还需要Java来实现。
22、董老师,鸿蒙开发工具里面有没有现成的一些控件库使用?
答:在鸿蒙SDK中,提供了包含有文本、按钮等常见的组件类,即比较基础的组件(控件)库。
23、老师有空给我们整个类似安卓的mvp或者mvcm呗?
答:非常感谢,您的需求我已经记下来,以后有机会我会研究。
24、请问我这的Text的没有weight比重,只有text-weight,这是怎么回事?
答:weight比重只存在于当这个组件处在定向布局(Directionallayout)的情况下。
25、发现官方的文档里面例子都比较少,那么怎么把控件的属性和基本用法了解清楚呢?好期待有那种根据上下文来展开常用用法的插件提供。就像aiXcoder一样的,在一个类或方法上面显示这个类或方法的常用用法 。
答:目前关于鸿蒙OS开发的资料较少,但是还是希望各位开发者理解,这是因为鸿蒙是一个全新的系统,许多资料还需要各位开发者共同努力。目前,可以参考51CTO学院上的课程以及相关的文章,希望能对您有所帮助。
26、老师,这个课是有JavaScript基础才能看懂么?分布式应用是编好一段代码,直接各种设备通用还是得对各设备专门编代码,大概怎么适配?
答:这个课程主要介绍了Java UI,还没有涉及到JavaScript UI。分布式应用是各个设备通用的。分布式应用可以包含多个HAP(harmonyOS Ability Package),不能的HAP可以对应不同的设备类型。在华为应用商店分发应用时,是按需分发HAP的。
27、如果从头学习Java代码的话,需要学习到什么程度
语言知识学的越多越好。最少需要掌握到面向对象的3个特征:封装、继承和多态。
但是,我当时学习Android开发时,也仅仅学习了很少的Java知识。但是Java知识越多,可能会让你充满学习信心和兴趣。
如果时间充裕,还是希望好好学习完Java再学习鸿蒙OS。
28、如果所有的软件功能都打通了,软件可以共享资源,比如地图部分,每个软件都调用相同的地图组件,视频部分,每个软件也都调用相同的视频软件,会不会缓解软件过于臃肿的问题
具有分布式处理功能的软件大小会不会比安卓系统的软件大小还要大,目前软件的体积都好臃肿
还有,这两个设备上的软件功能应该也不一样吧,软件大小是不是也不一样。但是如果依靠投屏或者分布式处理,是不是另外一个设别就不想需要安装那个软件了呢。
答:统一的操作系统,但是不同设别之间的差别还是很大的,会针对不同的设备进行软件的新适配吗。那一个软件如果想在多种设备上运行是不是还需要重新编写软件的代码
鸿蒙OS可以解决应用程序臃肿的问题。分布式应用可以包含多个HAP(harmonyOS Ability Package),不同的HAP可以对应不同的设备类型。在华为应用商店分发应用时,是按需分发HAP的。另外,还有一些HAP是在安装的时候并不直接下载的,而是在需要的时候再进行下载。
因此,在不同设备上安装同一的软件,其软件的大小很有可能不一样。不过,即使鸿蒙OS有分布式能力,每一个运行应用程序的设备在运行应用程序之前还是需要从应用市场上拉取安装包的。
在鸿蒙SDK中,提供了许多组件本身是具有适配能力的。例如,可以通过AdaptiveBoxLayout来进行自适应的布局,这一点非常有特色。但是,在某些复杂需求的情况下,还是需要针对不同设备来重新设计UI界面的。
作者:董昱
想了解更多内容,请访问: 51CTO和华为官方战略合作共建的鸿蒙技术社区https://harmonyos.51cto.com/