【鸿蒙学院】鸿蒙(HarmonyOS)IDE迎来重大更新,新特性足以让你尖叫!

1. 双向预览功能

2.Java UI 数据模拟

3. 新增的测试框架


鸿蒙(HarmonyOS)最新版的IDE Beta3于2021-03-31日发布,beta3增加了很多吸引人的功能,这些功能有一些与编程有关,有一些与配置、模板有关。本文主要深入介绍与编程有关的3个特性:双向预览、Java UI数据模拟和测试框架,至于其他的一些新特性,如更多的phone模板,API version的变化,可视化配置config.json等,可以参考我下面的视频。

【鸿蒙学院】特大喜讯,宇宙最强鸿蒙(HarmonyOS)IDE Beta3发布,新特性抢先体验(这不是愚人节礼物)

1. 双向预览功能

预览器增加了双向预览功能,所谓双向预览,针对的是布局。修改布局文件的代码,会立刻在预览器中显示布局的效果,而通过点击布局效果中的组件,会自动定位到布局中的特定代码。

现在让我来演示一下,首先创建一个HarmonyOS工程,然后打开自动生成的布局文件,多输入一些布局代码,如下所示。

然后启动右侧的预览器,效果如下:

可以看到,布局文件的效果直接体现在了预览器上。不过目前仍然是单向预览。

点击预览器右上角两个T的按钮,在右侧会显示组件树视图,下面是当前选中组件的属性列表,可以直接修改属性的值。当选中组件树或预览器中的组件时,布局代码就会自动定位到对应的组件,如下所示。

不过目前并不是所有情况都支持同步,有如下情况目前还无法同步:

(1) hml布局代码里使用了数据绑定的属性

(2)xml布局代码里使用了资源引用的属性

(3)UI界面设置了动画效果

2.Java UI 数据模拟

这个功能相当有趣,其实核心理念就是见什么人说什么话。在应用发布时,执行的是真正的业务逻辑代码,数据也是真实的。但在调试时,有时用真实的数据测试太费劲,这些真实的数据可能难以获得,或获取很麻烦,或者数据量很大,反正,就是各种不爽。

我们期望在应用发布时使用真实的数据,而在调试时,使用测试数据,关键一点是,不用修改任何代码,根据调试或发布的场景自动切换。这就是Java UI数据模拟的核心作用。其实这个功能的理念与我10年前做的一个实验性项目类似,这是一个模拟NFC的系统,支持Android。在开发时,使用模拟的NFC Tag和模拟的移动设备进行测试,只需要将NFC Tag拖动到模拟设备上,就相当于真实环境中的NFC Tag与手机接触。然后将App发布到真机上时,系统会自动探测当前运行环境,如果是真机,那么就会自动切换到使用真正的NFC芯片读写NFC Tag,这一过程是完全透明,不需要修改一行代码就可以自动切换,如下所示。

对这个系统感兴趣的同学可以看这篇文章:https://unitymarvel.blog.csdn.net/article/details/17339705

鸿蒙的Java UI数据模拟也类似,这个功能是为Java UI模拟数据的。由一系列API组成,不过这些API默认并没有包含在鸿蒙SDK中,需要在模块的build.gradle中添加如下依赖:

dependencies {
    ... ...
    implementation group:'com.huawei.deveco',name:'previewer-mock-core',version:'1.0.0.1'
}

运行程序,会先下载这个依赖。然后创建数据模拟类,代码如下:

package com.unitymarvel.harmonyos.games.sosgame.mock;
import com.huawei.asm.core.PreviewerMock;
import com.huawei.asm.core.annotation.PreviewerMockMethod;
import com.unitymarvel.harmonyos.games.sosgame.slice.MainAbilitySlice;
import ohos.aafwk.content.Intent;
public class MockClassTest extends PreviewerMock {
    @PreviewerMockMethod
    public void onStart(MainAbilitySlice slice, Intent intent) {
         intent.setParam("name", "Bill");
        intent.setParam("age", 20);
        slice.onStart(intent);
    }
}

这里用onStart方法拦截了Slice的onStart方法,相当于AOP的切片。在onStart方法中调用了Slice的onStart方法。如果这里不调用,那么Slice中的onStart方法是不会调用的(会显示黑屏)。在onStart方法中设置了模拟数据(name和age)。也就是说,Java UI数据模拟,其实借鉴了AOP的部分概念。

然后在Slice的onStart方法中可以使用下面的代码使用数据。这里的代码其实并不能感知用到的数据是模拟数据,还是真实的数据。

public void onStart(Intent intent) {
    super.onStart(intent);
    super.setUIContent(ResourceTable.Layout_ability_main);
    Text text = (Text)findComponentById(ResourceTable.Id_text_helloworld);
    text.setText("姓名:" + intent.getStringParam("name"));
    Text text1 = (Text)findComponentById(ResourceTable.Id_text_helloworld1);
    text1.setText("年龄:" + intent.getIntParam("age",0));


**自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**

**深知大多数HarmonyOS鸿蒙开发工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**

**因此收集整理了一份《2024年HarmonyOS鸿蒙开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。**
![img](https://img-blog.csdnimg.cn/img_convert/a0cc65a2e6503a59ee5de9923bd764ca.png)
![img](https://img-blog.csdnimg.cn/img_convert/63e86806a0c87ba3a26d588cc35b32b0.png)
![img](https://img-blog.csdnimg.cn/img_convert/24d2ec5cc42030702e3d1f42b544124e.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上HarmonyOS鸿蒙开发知识点,真正体系化!**

**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新**

**如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注鸿蒙获取)**
![img](https://img-blog.csdnimg.cn/img_convert/56af19ca2ef0f2f7f29713fb7840dd14.png)

**一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

图片转存中...(img-5LpG9yk5-1712873329488)]

**一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

  • 11
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值