一次开发,多端部署--实例二
一、视觉风格
1、分层参数
使用了分层参数后,当系统切换深色模式时,字体和背景也可以自适应。
Row() {
Column() {
Text('分层参数')
// 分层参数在sysResource包,属于系统参数,全局可用
.fontColor($r('sys_color.ohos_id_color_text_primary'))
.fontSize($r('sys.float.ohos_id_text_size_headline3'))
}
}
.backgroundColor($r('sys.color.ohos_id_color-background'))
2、自定义资源
开发者可以在resources目录中通过限定词目录来定义不同设备状态的资源,资源可以按照“key-value”的形式自定义。应用在运行态选择使用某资源时,系统会根据设备状态优先从相匹配的目录中寻找资源。
二、交互归一
1、缩放
Image()
.scale({ x: this.scaleValue, y: this.scaleValue, z: 1})
.gesture(
// 双指捏合事件
PinchGesture({ fingers: 2})
.onActionStart(( event ?: GestureEvent ) => {})
.onActionUpdate(( event ?: GestureEvent ) => {
this.scaleValue = this.pinchValue * event.scale
})
.onActionEnd( () => {
this.pinchValue = this.scaleValue
})
}
三、功能级一多
1、SysCap机制
HarmonyOS使用SysCap机制(即SystemCapability),可以帮助开发者仅关注设备的系统能力,而不用考虑成百上千种具体的设备类型,降低多设备应用开发难度。
(1)能力集
系统能力集:操作系统中每一个相对独立的特性,如蓝牙、WIFI、NFC等。
支持能力集:描述当前设备能够支持的哪些功能。
要求能力集:描述当前应用,具有哪些能力。
(2)canIUse接口
在编码阶段,开发者可以通过canIUse接口,判断目标设备是否支持某系统能力,进而执行不同的业务逻辑。通常当设备不支持某种能力时,运行到这部分代码后,给出友好弹窗,避免crash崩溃。
aboutToAppear() {
if ( canIUse('SystemCapability.Communication.NFC.CORE' )) {
controller.on('nfsCtateChange', (err,nfcState)) => {
this.message = 'nfcState:' + nfcSatet
})
} else {
this.message = 'this device does not support NFC'
}
}
四、工程级一多
1、三层架构规范