1. 前言
从华为官网的学习课程中,了解到ArkUI预览支持页面预览与组件预览。这个非常重要,因为使用真机调试的成本实在太大了,所以用好预览器就显得格外重要了,也是做界面开发的第一步。
2. 预览界面
2.1 使用预览器方式
以ArkTS为例,使用预览器的方法如下:
-
创建或打开一个ArkTS应用/服务工程。本示例以打开一个本地ArkTS Demo工程为例。
-
在工程目录下,打开任意一个.ets文件(JS工程请打开.hml/.css/.js页面)。
-
可以通过如下任意一种方式打开预览器开关,显示效果如下图所示:
- 通过菜单栏,单击View>Tool Windows>Previewer打开预览器。
- 在编辑窗口右上角的侧边工具栏,单击Previewer,打开预览器。
2.2 如何在开发中预览当前页面?
官网上是这样写的:
ArkTS应用/服务支持页面预览。页面预览通过在工程的ets文件头部添加@Entry实现。
也就是当我们需要调试当前的页面时,将当前的页面临时作为入口文件先展示。可在文件头部加上@Entry,然后就可以预览展示。
例如这里有一个弹窗组件,需要对这个组件进行调试,我们在这个组件的顶部加上@Entry,然后在编辑器的右侧栏找到Preview这个入口,打开。
不是点击上面的Preview右侧类似播放键的按钮哈,那个执行的是整个项目的入口文件,并不是临时的。所以当调试结束后,就把调试文件顶部的@Entry去掉。养成好习惯。
2.2 如何更改首页入口?
如果要更改整个项目的入口文件,该怎么改呢?实际情况可能是,Splash页面,也就是首屏页面切换到新的页面,不用默认的page > Index.ets,换成同级目录的其他文件(Welcome.ets),需要改动哪些点呢?
第一步:找到文件 entry > src > main > ets > entryAblility.ets
import { AbilityConstant, UIAbility, Want } from '@kit.AbilityKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
import { window } from '@kit.ArkUI';
export default class EntryAbility extends UIAbility {
onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');
}
onDestroy(): void {
hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onDestroy');
}
onWindowStageCreate(windowStage: window.WindowStage): void {
// Main window is created, set main page for this ability
hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageCreate');
windowStage.loadContent('pages/Index', (err) => {
if (err.code) {
hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? '');
return;
}
hilog.info(0x0000, 'testTag', 'Succeeded in loading the content.');
});
}
onWindowStageDestroy(): void {
// Main window is destroyed, release UI related resources
hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageDestroy');
}
onForeground(): void {
// Ability has brought to foreground
hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onForeground');
}
onBackground(): void {
// Ability has back to background
hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onBackground');
}
}
默认如上述代码所示,看到这里windowStage.loadContent('pages/Index', (err) => {}),默认展示的资源文件是pages/Index,将这里改为pages/Welcome。
第二步:找到文件 entry > src > main > resources > base > profile > main_page.json
{
"src": [
"pages/Index"
]
}
将首页路径从pages/Index,将这里改为pages/Welcome。
然后点击入口文件的执行按钮。入口文件切换到Welcome.ets。
2.3 如何预览当前组件?
在当前需要预览的组件文件的头部加上@Preview,打开预览器,即可进行预览。在开发界面UI代码过程中,如果添加或删除了UI组件,只需Ctrl+S进行保存,然后预览器就会立即刷新预览结果。
组件预览支持实时预览,不支持动态图和动态预览。组件预览通过在组件前添加注解@Preview实现,在单个源文件中,最多可以使用10个@Preview装饰自定义组件。可以通过设置@Preview的参数,指定预览设备的相关属性,若不设置@Preview的参数,默认的设备属性如下所示:
@Preview({
title: 'Component1', //预览组件的名称
deviceType: 'phone', //指定当前组件预览渲染的设备类型,默认为Phone
width: 1080, //预览设备的宽度,单位:px
height: 2340, //预览设备的长度,单位:px
colorMode: 'light', //显示的亮/暗模式,取值为light或dark
dpi: 480, //预览设备的屏幕DPI值
locale: 'zh_CN', //预览设备的语言,如zh_CN、en_US等
orientation: 'portrait', //预览设备的横竖屏状态,取值为portrait或landscape
roundScreen: false //设备的屏幕形状是否为圆形
})
3. 总结
知道如何使用预览器非常重要,预览器中还有个功能叫Inspector双向预览,开启双向预览功能后,支持代码编辑器、UI界面和Component Tree 三者之间的联动。做样式精修的时候会用上吧。从我们正常入门来说,需要熟练掌握页面和组件的预览,提高开发效率。