未验证 提交 b733f452 编写于 作者: O openharmony_ci 提交者: Gitee

!18439 FAQ更新+website修改

Merge pull request !18439 from zengyawen/master
......@@ -5,7 +5,6 @@
- [HTTP数据请求](http-request.md)
- [WebSocket连接](websocket-connection.md)
- [Socket连接](socket-connection.md)
- [策略管理](net-policy-management.md)
- [网络共享](net-sharing.md)
- [以太网连接](net-ethernet.md)
- [网络连接管理](net-connection-manager.md)
......
# 网络策略管理部件
## 简介
网络策略管理提供一些限制网络的基础能力,包括蜂窝网络策略、休眠/省电模式策略、后台网络策略、重置网络策略等功能。
> **说明:**
> 为了保证应用的运行效率,大部分API调用都是异步的,对于异步调用的API均提供了callback和Promise两种方式,以下示例均采用callback函数,更多方式可以查阅[API参考](../reference/apis/js-apis-net-policy.md)。
## 基本概念
- 休眠模式:设备在不需要工作的时候把一些部件、外设关掉(进入低功耗模式),并限制部分应用对网络的访问。
- 省电模式:省电模式是系统里的一个开关,开启后会降低设备的性能,并限制部分应用对网络的访问。
- 省流量模式:即后台网络策略,对处于后台的使用计量网络的应用进行限制。
- 蜂窝网络:移动通信网络。
- 计量网络:设置了流量配额的电话卡网络、Wlan网络以及以太网。
## 约束
- 开发语言:C++ JS
- 系统:linux内核
- 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
## 场景介绍
网络策略管理的典型场景有:
- 设置计量网络配额/获取已经设置的计量网络策略
- 后台网络限制开关/获取后台网络限制状态/获取指定uid在后台状态下能否访问网络
- 设定指定uid访问计量网络的策略/获取指定uid访问计量网络的策略/获取设置了对应策略的uids
- 重置网络策略
- 判断uid能否访问计量/非计量网络
- 将对应uid从休眠白名单里添加、移除/获取休眠模式的白名单列表
- 将对应uid从省电白名单里添加、移除/获取省电模式的白名单列表
- 更新网络提醒策略
以下分别介绍具体开发方式。
## 接口说明
完整的JS API说明以及实例代码请参考:[网络策略管理](../reference/apis/js-apis-net-policy.md)
| 类型 | 接口 | 功能说明 |
| ---- | ---- | ---- |
| ohos.net.policy | function setBackgroundPolicy(isAllowed: boolean, callback: AsyncCallback\<void>): void |设置后台网络策略,使用callback方式作为异步方法 |
| ohos.net.policy | function isBackgroundAllowed(callback: AsyncCallback\<boolean>): void; |获取后台网络策略,使用callback方式作为异步方法 |
| ohos.net.policy | function setPolicyByUid(uid: number, policy: NetUidPolicy, callback: AsyncCallback\<void>): void; |设置对应uid应用的访问计量网络的策略,使用callback方式作为异步方法 |
| ohos.net.policy | function getPolicyByUid(uid: number, callback: AsyncCallback\<NetUidPolicy>): void;| 通过应用uid获取策略,使用callback方式作为异步方法 |
| ohos.net.policy | function getUidsByPolicy(policy: NetUidPolicy, callback: AsyncCallback\<Array\<number>>): void; | 通过策略获取设置这一策略的应用uid数组,使用callback方式作为异步方法 |
| ohos.net.policy | function getNetQuotaPolicies(callback: AsyncCallback\<Array\<NetQuotaPolicy>>): void; |获取计量网络策略,使用callback方式作为异步方法 |
| ohos.net.policy | function setNetQuotaPolicies(quotaPolicies: Array\<NetQuotaPolicy>, callback: AsyncCallback\<void>): void; |设置计量网络策略,使用callback方式作为异步方法 |
| ohos.net.policy | function restoreAllPolicies(iccid: string, callback: AsyncCallback\<void>): void; | 重置对应sim卡id的蜂窝网络、后台网络策略、防火墙策略、应用对应的策略,使用callback方式作为异步方法 |
| ohos.net.policy | function isUidNetAllowed(uid: number, isMetered: boolean, callback: AsyncCallback\<boolean>): void; | 获取对应uid能否访问计量或非计量网络,使用callback方式作为异步方法 |
| ohos.net.policy | function isUidNetAllowed(uid: number, iface: string, callback: AsyncCallback\<boolean>): void; | 获取对应uid能否访问指定的iface的网络,使用callback方式作为异步方法 |
| ohos.net.policy | function setDeviceIdleAllowList(uid: number, isAllowed: boolean, callback: AsyncCallback\<void>): void; | 设置指定uid应用是否在休眠防火墙的白名单,使用callback方式作为异步方法 |
| ohos.net.policy | function getDeviceIdleAllowList(callback: AsyncCallback\<Array\<number>>): void; | 获取休眠模式白名单所包含的uid数组,使用callback方式作为异步方法 |
| ohos.net.policy | function getBackgroundPolicyByUid(uid: number, callback: AsyncCallback\<NetBackgroundPolicy>): void; | 获取指定uid能否访问后台网络,使用callback方式作为异步方法 |
| ohos.net.policy | function resetPolicies(iccid: string, callback: AsyncCallback\<void>): void; | 重置对应sim卡id的蜂窝网络、后台网络策略、防火墙策略、应用对应的策略,使用callback方式作为异步方法 |
| ohos.net.policy | function updateRemindPolicy(netType: NetBearType, iccid: string, remindType: RemindType, callback: AsyncCallback\<void>): void; | 更新提醒策略,使用callback方式作为异步方法 |
| ohos.net.policy | function setPowerSaveAllowList(uid: number, isAllowed: boolean, callback: AsyncCallback\<void>): void; | 设置指定uid应用是否在省电防火墙的白名单,使用callback方式作为异步方法 |
| ohos.net.policy | function getPowerSaveAllowList(callback: AsyncCallback\<Array\<number>>): void; | 获取省电模式白名单所包含的uid数组,使用callback方式作为异步方法 |
| ohos.net.policy | function on(type: "netUidPolicyChange", callback: Callback\<{ uid: number, policy: NetUidPolicy }>): void; | 订阅policy发生改变时的回调,使用callback方式作为异步方法 |
| ohos.net.policy | function off(type: "netUidPolicyChange", callback: Callback\<{ uid: number, policy: NetUidPolicy }>): void; | 取消订阅policy发生改变时的回调,使用callback方式作为异步方法 |
| ohos.net.policy | function on(type: "netUidRuleChange", callback: Callback\<{ uid: number, rule: NetUidRule }>): void; | 订阅rule发生改变时的回调,使用callback方式作为异步方法 |
| ohos.net.policy | function off(type: "netUidRuleChange", callback: Callback\<{ uid: number, rule: NetUidRule }>): void; | 取消订阅rule发生改变时的回调,使用callback方式作为异步方法 |
| ohos.net.policy | function on(type: "netMeteredIfacesChange", callback: Callback\<Array\<string>>): void; | 订阅计量iface发生改变时的回调,使用callback方式作为异步方法 |
| ohos.net.policy | function off(type: "netMeteredIfacesChange", callback: Callback\<Array\<string>>): void; | 取消订阅计量iface发生改变时的回调,使用callback方式作为异步方法 |
| ohos.net.policy | function on(type: "netQuotaPolicyChange", callback: Callback\<Array\<NetQuotaPolicy>>): void; | 订阅计量网络策略发生改变时的回调,使用callback方式作为异步方法 |
| ohos.net.policy | function off(type: "netQuotaPolicyChange", callback: Callback\<Array\<NetQuotaPolicy>>): void; | 取消订阅计量网络策略发生改变时的回调,使用callback方式作为异步方法 |
| ohos.net.policy | function on(type: "netBackgroundPolicyChange", callback: Callback\<boolean>): void; | 订阅后台网络策略发生改变时的回调,使用callback方式作为异步方法 |
| ohos.net.policy | function off(type: "netBackgroundPolicyChange", callback: Callback\<boolean>): void; | 取消订阅后台网络策略发生改变时的回调,使用callback方式作为异步方法 |
## 设置计量网络配额/获取已经设置的计量网络策略
1. 从@ohos.net.policy.d.ts中导入policy命名空间。
2. 调用setNetQuotaPolicies方法,设置计量网络策略。
3. 调用getNetQuotaPolicies方法,获取计量网络策略。
```js
// 引入包名
import policy from '@ohos.net.policy';
addNetQuotaPolicy(){
let param = {
// netType值详见 [NetBearType](../reference/apis/js-apis-net-connection.md#netbeartype)
netType:Number.parseInt(this.netType),
// 计量蜂窝网络的SIM卡的标识值。以太网,wifi网络不会用到
iccid:this.iccid,
// 计量蜂窝网络中配合iccid联合使用。以太网,wifi网络单独使用。用于标记类型
ident:this.ident,
// 计量开始时间。例如M1、D1、Y1等
periodDuration:this.periodDuration,
// 发出警告的流量阈值 大于0的整数即可
warningBytes:Number.parseInt(this.warningBytes),
// 流量设置的配额 大于0的整数即可
limitBytes:Number.parseInt(this.limitBytes),
// 是否为计量网络 true为计量网络 false为非计量网络
metered:Boolean(Number.parseInt(this.metered)),https://gitee.com/openharmony/docs/pulls/14404
// 到达流量限制后的动作 详见[LimitAction](../reference/apis/js-apis-net-policy.md#limitaction)
limitAction:Number.parseInt(this.limitAction)
};
this.netQuotaPolicyList.push(param);
},
// 订阅计量网络iface发生改变时的回调
policy.on('netMeteredIfacesChange', (data) => {
this.log('on netMeteredIfacesChange:' + JSON.stringify(data));
});
// 订阅计量网络策略发生改变时的回调
policy.on('netQuotaPolicyChange', (data) => {
this.log('on netQuotaPolicyChange:' + JSON.stringify(data));
});
// 调用setNetQuotaPolicies方法,设置计量网络策略
setNetQuotaPolicies(){
this.dialogType = DialogType.HIDE;
policy.setNetQuotaPolicies(this.netQuotaPolicyList, (err, data) => {
console.log(JSON.stringify(err))
console.log(JSON.stringify(data))
});
},
// 调用getNetQuotaPolicies方法,获取计量网络策略
getNetQuotaPolicies(){
policy.getNetQuotaPolicies((err, data) => {
this.callBack(err, data);
if(data){
this.netQuotaPolicyList = data;
}
});
},
// 取消订阅计量网络iface发生改变时的回调
policy.off('netMeteredIfacesChange', (data) => {
this.log('off netMeteredIfacesChange:' + JSON.stringify(data));
});
// 取消订阅计量网络策略发生改变时的回调
policy.off('netQuotaPolicyChange', (data) => {
this.log('off netQuotaPolicyChange:' + JSON.stringify(data));
});
```
## 后台网络限制开关/获取后台网络限制状态/获取指定uid在后台状态下能否访问网络
### 开发步骤
1. 从@ohos.net.policy.d.ts中导入policy命名空间。
2. 调用setBackgroundAllowed方法,设置开启后台省流量或关闭后台省流量。
3. 调用isBackgroundAllowed方法,获取后台网络限制状态(省流量)是开启还是关闭。
4. 调用getBackgroundPolicyByUid方法,获取指定uid在后台状态下能否访问网络。
```js
// 引入包名
import policy from '@ohos.net.policy'
// 订阅后台网络策略发生改变时的回调
policy.on('netBackgroundPolicyChange', (data) => {
this.log('on netBackgroundPolicyChange:' + JSON.stringify(data));
});
// 调用setBackgroundAllowed方法,设置开启后台省流量或关闭后台省流量
setBackgroundAllowed() {
policy.setBackgroundAllowed(Boolean(Number.parseInt(this.isBoolean)), (err, data) => {
console.log(JSON.stringify(err))
console.log(JSON.stringify(data))
});
},
// 调用isBackgroundAllowed方法,获取后台网络限制状态(省流量)是开启还是关闭。
isBackgroundAllowed() {
policy.isBackgroundAllowed((err, data) => {
console.log(JSON.stringify(err))
console.log(JSON.stringify(data))
});
},
// 调用getBackgroundPolicyByUid方法,获取指定uid在后台状态下能否访问网络。
getBackgroundPolicyByUid() {
policy.getBackgroundPolicyByUid(Number.parseInt(this.firstParam), (err, data) => {
console.log(JSON.stringify(err))
console.log(JSON.stringify(data))
});
},
// 取消订阅后台网络策略发生改变时的回调
policy.off('netBackgroundPolicyChange', (data) => {
this.log('off netBackgroundPolicyChange:' + JSON.stringify(data));
});
```
## 设定指定uid访问计量网络的策略/获取指定uid访问计量网络的策略/获取设置了对应策略的uids
### 开发步骤
1. 从@ohos.net.policy.d.ts中导入policy命名空间。
2. 调用setPolicyByUid方法,设置指定uid是否可以访问后台网络。
3. 调用getPolicyByUid方法,获取指定uid的策略。
4. 调用getUidsByPolicy方法,获取使用指定策略的uids。
```js
// 引入包名
import policy from '@ohos.net.policy'
// 订阅uid的policy发生改变时的回调
policy.on('netUidPolicyChange', (data) => {
this.log('on netUidPolicyChange:' + JSON.stringify(data));
});
// 订阅uid的rule发生改变时的回调
policy.on('netUidRuleChange', (data) => {
this.log('on netUidRuleChange:' + JSON.stringify(data));
});
// 调用setPolicyByUid方法,设置指定uid是否可以访问后台网络
setPolicyByUid() {
let param = {
uid: Number.parseInt(this.firstParam), policy: Number.parseInt(this.currentNetUidPolicy)
}
policy.setPolicyByUid(Number.parseInt(this.firstParam), Number.parseInt(this.currentNetUidPolicy), (err, data) => {
console.log(JSON.stringify(err))
console.log(JSON.stringify(data))
});
},
// 调用getPolicyByUid方法,获取指定uid的策略
getPolicyByUid() {
policy.getPolicyByUid(Number.parseInt(this.firstParam), (err, data) => {
console.log(JSON.stringify(err))
console.log(JSON.stringify(data))
});
},
// 调用getUidsByPolicy方法,获取使用指定策略的uids
getUidsByPolicy(){
policy.getUidsByPolicy(Number.parseInt(this.currentNetUidPolicy), (err, data) => {
console.log(JSON.stringify(err))
console.log(JSON.stringify(data))
});
},
// 取消订阅uid的policy发生改变时的回调
policy.off('netUidPolicyChange', (data) => {
this.log('off netUidPolicyChange:' + JSON.stringify(data));
});
// 取消订阅uid的rule发生改变时的回调
policy.off('netUidRuleChange', (data) => {
this.log('off netUidRuleChange:' + JSON.stringify(data));
});
```
## 重置网络策略
### 开发步骤
1. 从@ohos.net.policy.d.ts中导入policy命名空间。
2. 调用restoreAllPolicies方法,重置网络策略。
```js
// 引入包名
import policy from '@ohos.net.policy'
// 调用restoreAllPolicies方法,重置网络策略
restoreAllPolicies(){
policy.restoreAllPolicies(this.firstParam, (err, data) => {
console.log(JSON.stringify(err))
console.log(JSON.stringify(data))
});
},
```
## 判断uid能否访问计量/非计量网络
### 开发步骤
1. 从@ohos.net.policy.d.ts中导入policy命名空间。
2. 调用isUidNetAllowed方法,获取uid能否访问计量/非计量网络。
```js
// 引入包名
import policy from '@ohos.net.policy'
// 调用isUidNetAllowed方法,获取uid能否访问计量/非计量网络
isUidNetAllowedIsMetered(){
let param = {
uid: Number.parseInt(this.firstParam), isMetered: Boolean(Number.parseInt(this.isBoolean))
}
policy.isUidNetAllowed(Number.parseInt(this.firstParam), Boolean(Number.parseInt(this.isBoolean)), (err, data) => {
console.log(JSON.stringify(err))
console.log(JSON.stringify(data))
});
},
```
## 将对应uid从休眠白名单里添加、移除/获取休眠模式的白名单列表
### 开发步骤
1. 从@ohos.net.policy.d.ts中导入policy命名空间。
2. 调用setDeviceIdleAllowList方法,设置uid是否添加到休眠模式白名单。
3. 调用getDeviceIdleAllowList方法,获取添加在休眠模式白名单的uids。
```js
// 引入包名
import policy from '@ohos.net.policy'
// 调用setDeviceIdleAllowList方法,设置uid是否添加到休眠模式白名单
setDeviceIdleAllowList(){
let param = {
uid: Number.parseInt(this.firstParam), isAllowed: Boolean(Number.parseInt(this.isBoolean))
}
policy.setDeviceIdleAllowList(Number.parseInt(this.firstParam), Boolean(Number.parseInt(this.isBoolean)), (err, data) => {
console.log(JSON.stringify(err))
console.log(JSON.stringify(data))
});
},
// 调用getDeviceIdleAllowList方法,获取添加在休眠模式白名单的uids
getDeviceIdleAllowList(){
policy.getDeviceIdleAllowList((err, data) => {
console.log(JSON.stringify(err))
console.log(JSON.stringify(data))
});
},
```
## 将对应uid从省电白名单里添加、移除/获取省电模式的白名单列表
### 开发步骤
1. 从@ohos.net.policy.d.ts中导入policy命名空间。
2. 调用setPowerSaveAllowList方法,设置uid是否添加到省电模式白名单。
3. 调用getPowerSaveAllowList方法,获取添加在省电模式白名单的uids。
```js
// 引入包名
import policy from '@ohos.net.policy'
// 调用setPowerSaveAllowList方法,设置uid是否添加到省电模式白名单
setPowerSaveAllowList(){
let param = {
uid: Number.parseInt(this.firstParam), isAllowed: Boolean(Number.parseInt(this.isBoolean))
}
policy.setPowerSaveAllowList(Number.parseInt(this.firstParam), Boolean(Number.parseInt(this.isBoolean)), (err, data) => {
console.log(JSON.stringify(err))
console.log(JSON.stringify(data))
});
},
// 调用getPowerSaveAllowList方法,获取添加在省电模式白名单的uids
getPowerSaveAllowList(){
policy.getPowerSaveAllowList((err, data) => {
console.log(JSON.stringify(err))
console.log(JSON.stringify(data))
});
},
```
## 更新网络提醒策略
### 开发步骤
1. 从@ohos.net.policy.d.ts中导入policy命名空间。
2. 调用updateRemindPolicy,更新网络提醒策略。
```js
// 引入包名
import policy from '@ohos.net.policy'
// 调用updateRemindPolicy,更新网络提醒策略
updateRemindPolicy() {
let param = {
netType: Number.parseInt(this.netType), iccid: this.firstParam, remindType: this.currentRemindType
}
policy.updateRemindPolicy(Number.parseInt(this.netType), this.firstParam, Number.parseInt(this.currentRemindType), (err, data) => {
console.log(JSON.stringify(err))
console.log(JSON.stringify(data))
});
},
```
\ No newline at end of file
......@@ -3,8 +3,13 @@
- [如何编译full-SDK](full-sdk-compile-guide.md)
- [如何替换full-SDK](full-sdk-switch-guide.md)
- [Ability开发常见问题](faqs-ability.md)
- [ArkUI框架开发常见问题](faqs-arkui.md)
- [ArkUI开发框架开发-ArkTS语法常见问题](faqs-arkui-arkts.md)
- ArkUI框架开发常见问题(ArkTS)
- [ArkTS语法使用常见问题](faqs-arkui-arkts.md)
- [ArkUI组件开发常见问题(ArkTS)](faqs-arkui-component.md)
- [ArkUI布局开发常见问题(ArkTS)](faqs-arkui-layout.md)
- [ArkUI路由/导航开发常见问题(ArkTS)](faqs-arkui-route-nav.md)
- [ArkUI动画/交互事件开发常见问题(ArkTS)](faqs-arkui-animation-interactive-event.md)
-[ArkUI框架开发常见问题(JS)](faqs-arkui-js.md)
- [Web开发常见问题](faqs-arkui-web.md)
- [包管理开发常见问题](faqs-bundle-management.md)
- [资源管理开发常见问题](faqs-globalization.md)
......
# ArkUI动画/交互事件开发常见问题(ArkTS)
## 焦点事件onBlur/onFocus回调无法触发
适用于 OpenHarmony 3.2 Beta5 API 9
**问题现象**
焦点事件onBlur/onFocus回调无法触发
**解决措施**
焦点事件默认情况下需要外接键盘的Tab键,或方向键触发,点击触发焦点事件需要添加焦点控制属性focusOnTouch。
**参考链接**
[焦点控制](../reference/arkui-ts/ts-universal-attributes-focus.md)
## scroll里面套一个grid,如何禁用grid的滑动事件
适用于 OpenHarmony 3.2 Beta5 API 9
可以通过onScrollFrameBegin事件和scrollBy方法实现容器嵌套滚动。
可参考:[容器嵌套滚动样例](../reference/arkui-ts/ts-container-scroll.md#示例2)
## 如何实现一个组件不停地旋转
适用于 OpenHarmony 3.2 Beta5 API 9
可以通过[属性动画](../reference/arkui-ts/ts-animatorproperty.md)的方式实现。
## 列表目前无法键盘上下滑动,是否能力不支持
适用于 OpenHarmony 3.2 Beta5 API 9
**解决措施**
有以下两种方案:
1. 需要在列表子项中添加focusable\(true\)进行获焦。
2. 在每个item的外层嵌套一个可获焦组件,例如Button。
## 键盘移动焦点对象按下enter,为什么不会触发点击事件
适用于 OpenHarmony 3.2 Beta5 API 9
组件的内置的点击事件和开发者自定义的onClick点击事件默认会和空格键绑定,并非与enter键绑定(UX规格)。
## 多层组件嵌套button,如何阻止事件传递
适用于 OpenHarmony 3.2 Beta5 API 9
可以通过将button组件绑定参数stopPropagation来控制冒泡传递。
## 使用router或Navigator实现页面跳转时,如何关闭页面间转场动效
适用于 OpenHarmony 3.2 Beta5 API 9
1. 参考[页面间转场示例](../reference/arkui-ts/ts-page-transition-animation.md#示例)在当前页面和目标页面中定义pageTransition方法。
2. 将页面入场组件PageTransitionEnter和页面退场组件PageTransitionExit的动效参数duration都设置为0。
## 在容器组件嵌套的场景下,如何解决手势拖拽事件出现错乱的问题
适用于 OpenHarmony 3.2 Beta5 API 9
PanGesture用于触发拖动手势事件,滑动的最小距离distance默认为5vp时拖动手势识别成功。可以将distance值设为1,使拖动更灵敏,避免造成事件错乱。
**参考链接**
[PanGesture](../reference/arkui-ts/ts-basic-gestures-pangesture.md)
## 基于OpenHarmony开发的应用,是否支持使用fontFamily属性设置不同的字体
适用于:OpenHarmony 3.2 Beta5 API 9
基于OpenHarmony开发的应用,默认字体'HarmonyOS Sans',且当前只支持这种字体。
## 点击输入框时会拉起软键盘,点击button时软键盘关闭要如何实现
适用于 OpenHarmony 3.2 Beta5 API 9
TextInput获取焦点会弹出输入法,失去焦点就会关闭软键盘,使用focusControl控制焦点即可关闭软件盘。
**代码示例**
```
build() {
Column() {
TextInput()
Button(`hide`)
.key('button')
.onClick(()=>{
focusControl.requestFocus('button')
})
}
}
```
## 当父组件绑定了onTouch,其子组件Button绑定了onClick,如何做到点击Button只响应Button的onClick,而不用响应父组件的onTouch?
适用于 OpenHarmony 3.2 Beta5 API 9
可以在Button组件中绑定onTouch,并在onTouch中使用stopPropagation\(\)阻止onTouch冒泡传递到父组件阻止冒泡传递。
**代码示例**
```
build() {
Row() {
Button("点击我")
.width(100)
.width(100)
.backgroundColor('#f00')
.onClick(()=>{
console.log("Button onClick")
})
.onTouch((e) => {
console.log("Button onTouch")
e.stopPropagation()
})
}
.onTouch(() => {
console.log("Row onTouch")
})
}
```
## 绑定菜单后无法使用右键触发菜单
适用于:OpenHarmony 3.2 Beta API 9
**解决措施**
目前菜单仅支持点击、长按触发方式,没有右键方式。
## 点击文本输入框,如何屏蔽系统默认键盘弹起行为?
适用于:OpenHarmony 3.2 Beta5 API 9
设置TextInput组件的focusable属性为false,此组件则不可获焦,就不会拉起系统默认的键盘。
## 如何实现上下切换的页面间跳转动画
适用于:OpenHarmony 3.2 Beta5 API 9
**问题现象**
页面切换时如何实现上下切换动画
**解决措施**
可以使用pageTransition函数来实现页面转场效果,通过PageTransitionEnter和PageTransitionExit指定页面进入和退出的动画效果,将其slide属性设置为SlideEffect.Bottom,则页面入场时从下边划入,出场时滑出到下边,即可实现上下切换效果。
**代码示例**
```
// Index.ets
@Entry
@Component
struct PageTransition1 {
build() {
Stack({alignContent: Alignment.Bottom}) {
Navigator({ target: 'pages/Page1'}) {
Image($r('app.media.ic_banner01')).width('100%').height(200) // 图片存放在media文件夹下
}
}.height('100%').width('100%')
}
pageTransition() {
PageTransitionEnter({ duration: 500, curve: Curve.Linear }).slide(SlideEffect.Bottom)
PageTransitionExit({ duration: 500, curve: Curve.Ease }).slide(SlideEffect.Bottom)
}
}
```
```
// Page1.ets
@Entry
@Component
struct PageTransition2 {
build() {
Stack({alignContent: Alignment.Bottom}) {
Navigator({ target: 'pages/Index'}) {
Image($r('app.media.ic_banner02')).width('100%').height(200) // 图片存放在media文件夹下
}
}.height('100%').width('100%')
}
pageTransition() {
PageTransitionEnter({ duration: 500, curve: Curve.Linear }).slide(SlideEffect.Bottom)
PageTransitionExit({ duration: 500, curve: Curve.Ease }).slide(SlideEffect.Bottom)
}
}
```
**参考链接**
[页面转场动画](https://docs.openharmony.cn/pages/v3.2/zh-cn/application-dev/ui/arkts-page-transition-animation.md/)
## 自定义组件间如何实现从底部滑入滑出的效果
适用于:OpenHarmony 3.2 Beta5 API 9
**问题现象**
一个页面底部默认显示自定义组件A,点击自定义组件A,则A消失,自定义组件B从底部出现;点击自定义组件B,则组件B消失,A从底部出现。这个效果要如何实现?
**解决措施**
可以使用transition产生组件转场动画,其参数type用来设置组件变化场景,包括新增和删除;参数translate用来设置转场时的平移效果。注意transition需要配合animateTo才能生效,动效时长、曲线、延时跟随animateTo中的配置。
**代码示例**
```
@Entry
@Component
struct ComponentTransition {
@State flag: boolean = true;
build() {
Stack({alignContent: Alignment.Bottom}) {
if (this.flag) {
ComponentChild1({ flag: $flag })
.transition({ type: TransitionType.Insert,translate: { x: 0, y: 200 } })
}
if (!this.flag) {
ComponentChild2({ flag: $flag })
.transition({ type: TransitionType.Insert, translate: { x: 0, y: 200 } })
}
}.height('100%').width('100%')
}
}
@Component
struct ComponentChild1 {
@Link flag: boolean
build() {
Column() {
Image($r('app.media.ic_banner01'))
.width('100%')
.height(200)
.onClick(() => {
animateTo({ duration: 1000 }, () => {
this.flag = !this.flag;
})
})
}
}
}
@Component
struct ComponentChild2 {
@Link flag: boolean
build() {
Column() {
Image($r('app.media.ic_banner02'))
.width('100%')
.height(200)
.onClick(() => {
animateTo({ duration: 1000 }, () => {
this.flag = !this.flag;
})
})
}
}
}
```
**参考链接**
[组件内转场动画](https://docs.openharmony.cn/pages/v3.2/zh-cn/application-dev/ui/arkts-transition-animation-within-component.md/)
# ArkUI开发框架(ArkTS语法)
# ArkTS语法使用常见问题
## ArkUI如何通过代码动态创建组件
......
# ArkUI框架开发常见问题
## 如何动态替换掉资源文件中的“%s”占位符
适用于OpenHarmony 3.2 Beta5 API 9
**问题现象**
引用String资源,如何动态替换资源文件中的“%s”占位符。
**解决措施**
在应用中,通过`$r('app.string.xx')`的形式引用应用资源,\$r的第二个参数可用于替换%s占位符。
**代码示例**
```
build() {
//do something
//引用的string资源,$r的第二个参数用于替换%s
Text($r('app.string.entry_desc','aaa'))
.fontSize(100)
.fontColor(Color.Black)
//do something
}
```
## 自定义弹窗能否在ts文件中定义和使用
适用于:OpenHarmony 3.2 Beta5 API 9 Stage模型
自定义弹窗的定义和初始化需要用到属于ArkTS语法内容,必须在ets后缀文件中定义使用,不能在ts后缀文件中定义使用。
**参考链接**
[自定义弹窗](../reference/arkui-ts/ts-methods-custom-dialog-box.md)
## 自定义弹窗中的变量如何传递给页面
适用于:OpenHarmony 3.2 Beta5 API 9 Stage模型
**问题现象**
在自定义弹窗内定义的变量内容,在关闭弹窗或变量变化时需要及时传递给页面,可以通过何种方式传递?
**解决措施**
- 方式一:使用组件的状态变量传递。
- 方式二:在初始化弹窗时,传递一个方法给自定义弹窗,在自定义弹窗中触发该方法,弹窗中变量作为方法的参数。
- 方式三:使用AppStorage或LocalStorage方式管理页面状态,实现自定义弹窗和页面之间状态的共享。
**代码示例**
- 方式一:
```
@CustomDialog
struct CustomDialog01 {
@Link inputValue: string
controller: CustomDialogController
build() {
Column() {
Text('Change text').fontSize(20).margin({ top: 10, bottom: 10 })
TextInput({ placeholder: '', text: this.inputValue }).height(60).width('90%')
.onChange((value: string) => {
this.inputValue = value
})
}
}
}
@Entry
@Component
struct DialogDemo01 {
@State inputValue: string = 'click me'
dialogController: CustomDialogController = new CustomDialogController({
builder: CustomDialog01({
inputValue: $inputValue
})
})
build() {
Column() {
Button(this.inputValue)
.onClick(() => {
this.dialogController.open()
}).backgroundColor(0x317aff)
}.width('100%').margin({ top: 5 })
}
}
```
- 方式二:
```
@CustomDialog
struct CustomDialog02 {
private inputValue: string
changeInputValue: (val: string) => void
controller: CustomDialogController
build() {
Column() {
Text('Change text').fontSize(20).margin({ top: 10, bottom: 10 })
TextInput({ placeholder: '', text: this.inputValue }).height(60).width('90%')
.onChange((value: string) => {
this.changeInputValue(value)
})
}
}
}
@Entry
@Component
struct DialogDemo02 {
@State inputValue: string = 'click me'
dialogController: CustomDialogController = new CustomDialogController({
builder: CustomDialog02({
inputValue: this.inputValue,
changeInputValue: (val: string) => {
this.inputValue = val
}
})
})
build() {
Column() {
Button(this.inputValue)
.onClick(() => {
this.dialogController.open()
}).backgroundColor(0x317aff)
}.width('100%').margin({ top: 5 })
}
}
```
- 方式三:
```
let storage = LocalStorage.GetShared()
@CustomDialog
struct CustomDialog03 {
@LocalStorageLink('inputVal') inputValue: string = ''
controller: CustomDialogController
build() {
Column() {
Text('Change text').fontSize(20).margin({ top: 10, bottom: 10 })
TextInput({ placeholder: '', text: this.inputValue }).height(60).width('90%')
.onChange((value: string) => {
this.inputValue = value;
})
}
}
}
@Entry(storage)
@Component
struct DialogDemo03 {
@LocalStorageLink('inputVal') inputValue: string = ''
dialogController: CustomDialogController = new CustomDialogController({
builder: CustomDialog03()
})
build() {
Column() {
Button(this.inputValue)
.onClick(() => {
this.dialogController.open()
}).backgroundColor(0x317aff)
}.width('100%').margin({ top: 5 })
}
}
```
## 如何获取组件的宽高
适用于:OpenHarmony 3.2 Beta5 API 9 Stage模型
**问题现象**
组件的宽高信息用于计算布局区域大小以及偏移量等内容,如何获取宽高信息?
**解决措施**
- 方式一:使用组件区域变化事件onAreaChange,在组件初始化或组件尺寸发生变化时触发。
- 方式二:在点击或触摸事件中,事件的回调信息中存在目标元素的区域信息。
**参考链接**
[组件区域变化事件](../reference/arkui-ts/ts-universal-component-area-change-event.md)[点击事件](../reference/arkui-ts/ts-universal-events-click.md)[触摸事件](../reference/arkui-ts/ts-universal-events-touch.md)
## 如何一键清空TextInput、TextArea组件内容
适用于:OpenHarmony 3.2 Beta5 API 9 Stage模型
**问题现象**
TextInput,TextArea组件输入多字符后,需要实现点击清空。
**解决措施**
将状态变量赋值给TextInput或TextArea组件的text属性,在做点击清空事件时为状态变量赋值空字符串。
**代码示例**
```
struct Index {
@State text: string = 'Hello World'
controller: TextInputController = new TextInputController()
build() {
Row() {
Column() {
TextInput({ placeholder: 'Please input your words.', text: this.text,
controller:this.controller}).onChange((value) => {
this.text = value
})
Button("Clear TextInput").onClick(() => {
this.text = "";
})
}
.width('100%')
}
.height('100%')
}
}
```
## 如何设置自定义弹窗位置
适用于:OpenHarmony 3.2 Beta5 API 9 Stage模型
**问题现象**
自定义弹窗当前默认在窗口居中显示,当自定义弹窗需要与窗口边框对齐是需要设置自定义弹窗的对齐方式。
**解决措施**
初始化自定义弹窗时,通过alignment参数设置对齐方式,通过offset设置弹窗偏移量。
**参考链接**
[自定义弹窗](../reference/arkui-ts/ts-methods-custom-dialog-box.md)
## 如何隐藏容器组件的溢出内容
适用于:OpenHarmony 3.2 Beta5 API 9 Stage模型
**问题现象**
当容器组件内容溢出时,表现为子组件边缘超出容器组件,需要进行隐藏设置。
**解决措施**
将通用属性-形状裁剪clip属性设置为true,表示按照容器边缘轮廓进行裁剪。此属性默认为false,表示不进行裁剪隐藏。
**参考链接**
[形状裁剪](../reference/arkui-ts/ts-universal-attributes-sharp-clipping.md)
## 自定义弹窗大小如何自适应内容
适用于:OpenHarmony 3.2 Beta5 API 9 Stage模型
**问题现象**
当自定义弹窗中存在可变化区域大小的子组件时,弹窗大小需要跟随自适应。
**解决措施**
- 方式一:采用弹窗容器默认样式。在默认样式中,弹窗容器高度自适应子节点,最大可为窗口高度的90%;弹窗容器的宽度根据栅格系统自适应,不跟随子节点变化。
- 方式二:当显示设置customStyle为true时,弹窗宽高跟随子节点内容适应。
**参考链接**
[自定义弹窗](../reference/arkui-ts/ts-methods-custom-dialog-box.md)
## 如何理解自定义弹窗中的gridCount参数
适用于:OpenHarmony 3.2 Beta5 API 9 Stage模型
gridCount参数是指弹窗宽度占栅格列数的个数。系统把窗口宽等分,等分的份数即为栅格列数,不同设备栅格列数不同。比如手机屏幕密度值在320vp<=水平宽度<600vp,所以栅格列数是4,则gridCount的有效值在\[1, 4\]
注意:仅采用弹窗默认样式时设置有效。
**参考链接**
[自定义弹窗](../reference/arkui-ts/ts-methods-custom-dialog-box.md)
## 如何去除自定义弹窗的白色背景
适用于:OpenHarmony 3.2 Beta5 API 9 Stage模型
**问题现象**
使用自定义弹窗时,默认样式中存在白色背景。
**解决措施**
需要采用自定义样式来消除自定义弹窗的白色背景:
1. 在初始化自定义弹窗时设置customStyle为true。
2. 在定义弹窗时设置组件背景色backgroundColor。
**参考链接**
[自定义弹窗](../reference/arkui-ts/ts-methods-custom-dialog-box.md)
## TextInput组件密码模式下,右边的眼睛图标能否支持自定义
适用于:OpenHarmony 3.2 Beta5 API 9 Stage模型
**问题现象**
TextInput组件设置type为InputType.Password时,右侧出现眼睛图标,不能修改图标样式。
**解决措施**
当前图标不支持自定义,可使用TextInput的showPasswordIcon属性隐藏图标,使用Image组件替代控制TextInput组件的type。
**参考链接**
[TextInput组件](../reference/arkui-ts/ts-basic-components-textinput.md)
## TextInput的onSubmit事件如何使用
适用于:OpenHarmony 3.2 Beta5 API 9 Stage模型
**问题现象**
TextInput的onSubmit事件怎么触发,以及事件回调的参数类型代表的含义。
**解决措施**
onSubmit事件在外接键盘或软键盘回车时触发该回调,回调的参数为当前软键盘回车键类型。通过TextInput的enterKeyType属性可以设置输入法回车键类型,软键盘回车键样式需要输入法的支持。
**参考链接**
[TextInput组件](../reference/arkui-ts/ts-basic-components-textinput.md)
## TextInput在聚焦时如何使光标回到起点
适用于:OpenHarmony 3.2 Beta5 API 9 Stage模型
**问题现象**
TextInput组件在聚焦时,光标位置会自动根据触摸点位置变化,如何使得聚焦时光标固定显示在起点位置?
**解决措施**
1. TextInput组件绑定onEditChange事件,该事件TextInput可进行输入时触发。
2. 在事件回调用TextInputController.caretPosition方法设置光标位置,不过需要用到setTimeout延迟方法。
**代码示例**
```
@Entry
@Component
struct TextInputDemo {
controller: TextInputController = new TextInputController()
build() {
Column() {
TextInput({ controller: this.controller })
.onEditChange((isEditing: boolean) => {
if (isEditing) {
setTimeout(() => {
this.controller.caretPosition(0)
}, 100)
}
})
}
}
}
```
**参考链接**
[TextInput组件](../reference/arkui-ts/ts-basic-components-textinput.md)
## 如何获取组件的属性信息
适用于:OpenHarmony 3.2 Beta5 API 9 Stage模型
**解决措施**
组件所有属性信息可通过通用属性-组件标识内getInspectorByKey获取。
**参考链接**
[组件标识](../reference/arkui-ts/ts-universal-attributes-component-id.md)
## 如何获取可滚动组件的当前滚动偏移量
适用于:OpenHarmony 3.2 Beta5 API 9 Stage模型
**问题现象**
可滚动组件包含List,Grid,Scroll等,在发生滚动时如何获取滚动偏移量?
**解决措施**
1. 可滚动组件在初始化时可设置scroller参数,绑定滚动控制器。
2. 通过控制器的currentOffset方法可获取水平和竖直方向的滚动偏移量。
**参考链接**
[Scroll](../reference/arkui-ts/ts-container-scroll.md#currentoffset)
## 如何实现文本竖向排列
适用于:OpenHarmony 3.2 Beta5 API 9 Stage模型
**问题现象**
使用Text组件时,无法将文本排列方向设置为竖向排列。
**解决措施**
Text组件当前文本排列方向固定为横向排列,要设置为竖向排列,可将文件拆分,使用Flex容器组件装填,设置主轴方向为竖向。
**代码示例**
```
@Entry
@Component
struct Index15 {
private message: string = '本文档适用于应用开发的初学者。通过构建一个简单的具有页面跳转/返回功能的应用,快速了解工程目录的主要文件,熟悉应用开发流程。';
build() {
Flex({ direction: FlexDirection.Column, wrap: FlexWrap.Wrap }) {
ForEach(this.message.split(''), (item, index) => {
Text(item)
.fontSize(30)
.flexShrink(0)
})
}
}
}
```
## 如何创建Toast窗口
适用于:OpenHarmony 3.2 Beta5 API 9 Stage模型
**问题现象**
应用做弱提示时,需要采用Toast窗口。
**解决措施**
可使用系统提供的@ohos.promptAction接口创建Toast窗口。
**参考链接**
[@ohos.promptAction \(弹窗\)](../reference/apis/js-apis-promptAction.md)
## Toast弹窗是否支持自定义背景或者字体颜色
适用于 OpenHarmony 3.2 Beta5 API 9 Stage模型
当前版本不支持Toast弹窗自定义背景和字体颜色。
**参考链接**
[@ohos.promptAction \(弹窗\)](../reference/apis/js-apis-promptAction.md)
## 如何将Ability的UI界面设置成透明
适用于:OpenHarmony SDK 3.2,API9
**问题现象**
如何设置Ability的UI界面为透明
**解决措施**
将最上层容器组件背景色设置为透明,然后通过设置XComponent组件的opacity属性值为0.01来实现。
示例:
```
build() {
Stack() {
XComponent({
id: 'componentId',
type: 'surface',
})
.width('100%')
.height('100%')
.opacity(0.01)
// 页面内容
}
.width('100%')
.height('100%')
.backgroundColor('rgba(255,255,255, 0)')
}
```
## constraintSize尺寸设置不生效
适用于:Openharmony 3.2 Beta5 API 9 stage模型
**问题现象**
constraintSize约束组件尺寸时,子组件内设置百分比宽度,例如width\('100%'\)会采用constraintSize约束中的最大宽乘百分比,导致撑开组件,看起来constraintSize设置没生效。
**解决措施**
可以在外层使用Scroll组件,设置constraintSize,当子组件占用空间超过设置的约束值时,会显示滚动条。
## 如何将背景颜色设置为透明
适用于:OpenHarmony 3.2 Beta5 API 9
**解决措施**
将backgroundColor设置为 '\#00000000'。
## Scroll组件滚动到达不了最底部
适用于:OpenHarmony 3.2 Beta5 API 9 Stage模型
**问题现象**
Scroll组件在未设置高度情况下,默认为窗口高度,当滚动区域外存在其他组件时,滚动底部区域会出现遮挡。
**解决措施**
Scroll组件需要设置Scroll高度,或者使用Flex布局限制Scroll高度。
## backgroundImage如何设置CenterCrop
适用于:OpenHarmony 3.2 Beta5 API 9 Stage模型
**问题现象**
CenterCrop是android中imageView,scaletype的设置,主要保证图片等比缩放裁剪,位置保持居中,要达到相同效果,应该怎么处理?
**解决措施**
可以使用通用属性backgroundImageSize\(ImageSize.cover\)和backgroundImagePosition\(Alignment.Center\)达到相同效果。
## 如何自定义Video组件控制栏样式
适用于:OpenHarmony 3.2 Beta5 API 9 Stage模型
**解决措施**
1. 通过设置属性controls为false关闭默认控制栏。
2. 设置Video组件的controller。
3. 通过ArkTS实现自定义的控制栏,并通过VideoController控制视频播放。
**代码示例**
```
// xxx.ets
@Entry@Componentstruct VideoCreateComponent {
@State videoSrc: Resource = $rawfile('video1.mp4')
@State previewUri: Resource = $r('app.media.poster1')
@State curRate: PlaybackSpeed = PlaybackSpeed.Speed_Forward_1_00_X
@State isAutoPlay: boolean = false
@State showControls: boolean = true
controller: VideoController = new VideoController()
build() {
Column() {
Video({
src: this.videoSrc,
previewUri: this.previewUri,
currentProgressRate: this.curRate,
controller: this.controller
}).width('100%').height(600)
.autoPlay(this.isAutoPlay)
.controls(this.showControls)
.onStart(() => {
console.info('onStart')
})
.onPause(() => {
console.info('onPause')
})
.onFinish(() => {
console.info('onFinish')
})
.onError(() => {
console.info('onError')
})
.onPrepared((e) => {
console.info('onPrepared is ' + e.duration)
})
.onSeeking((e) => {
console.info('onSeeking is ' + e.time)
})
.onSeeked((e) => {
console.info('onSeeked is ' + e.time)
})
.onUpdate((e) => {
console.info('onUpdate is ' + e.time)
})
Row() {
Button('src').onClick(() => {
this.videoSrc = $rawfile('video2.mp4') // 切换视频源
}).margin(5)
Button('previewUri').onClick(() => {
this.previewUri = $r('app.media.poster2') // 切换视频预览海报
}).margin(5)
Button('controls').onClick(() => {
this.showControls = !this.showControls // 切换是否显示视频控制栏
}).margin(5)
}
Row() {
Button('start').onClick(() => {
this.controller.start() // 开始播放
}).margin(5)
Button('pause').onClick(() => {
this.controller.pause() // 暂停播放
}).margin(5)
Button('stop').onClick(() => {
this.controller.stop() // 结束播放
}).margin(5)
Button('setTime').onClick(() => {
this.controller.setCurrentTime(10, SeekMode.Accurate) // 精准跳转到视频的10s位置
}).margin(5)
}
Row() {
Button('rate 0.75').onClick(() => {
this.curRate = PlaybackSpeed.Speed_Forward_0_75_X // 0.75倍速播放
}).margin(5)
Button('rate 1').onClick(() => {
this.curRate = PlaybackSpeed.Speed_Forward_1_00_X // 原倍速播放
}).margin(5)
Button('rate 2').onClick(() => {
this.curRate = PlaybackSpeed.Speed_Forward_2_00_X // 2倍速播放
}).margin(5)
}
}
}}
```
**参考链接**
[Video](../reference/arkui-ts/ts-media-components-video.md#start)
## 如何设置组件不同状态下的样式
**问题现象**
对应组件的不同状态(如无状态、按下、禁用、聚焦、点击),显示不同的样式。
**解决措施**
使用多态样式,在组件的StateStyles接口中,定义组件不同状态下的样式。
**代码示例**
```
//xxx.ts
@Entry
@Component
struct StyleExample {
@State isEnable: boolean = true;
@Styles pressedStyles() {
.backgroundColor("#ED6F21")
.borderRadius(10)
.borderStyle(BorderStyle.Dashed)
.borderWidth(2)
.borderColor('#33000000')
.width(120)
.height(30)
.opacity(1)
}
build() {
Flex({direction: FlexDirection.Column, alignItems: ItemAlign.Center}) {
Text("pressed")
.backgroundColor('#0A59F7')
.borderRadius(20)
.borderStyle(BorderStyle.Dotted)
.borderWidth(2)
.borderColor(Color.Red)
.width(100)
.height(25)
.opacity(1)
.fontSize(14)
.fontColor(Color.White)
.stateStyles({
pressed: this.pressedStyles
})
.margin({
bottom: 20
})
.textAlign(TextAlign.Center)
}
.width(350)
.height(300)
}
}
```
**参考链接**
[多态样式](../reference/arkui-ts/ts-universal-attributes-polymorphic-style.md)
## Scroll内Flex加宽高与滑动冲突
适用于:OpenHarmony 3.2 Beta5 API 9 Stage模型
**问题现象**
当在Scroll组件中添加容器组件,并设置该容器组件的尺寸时,会破坏滚动布局。
**解决措施**
Scroll组件中的容器组件不设置尺寸,大小由内容撑开。
## ArkTS使用position之后height不生效
适用于 OpenHarmony 3.2 Beta5 API 9
**问题现象**
ArkTS使用position之后height不生效
**解决措施**
容器组件在使用position之后会脱离文本流,导致容器脱离外层容器束缚,导致height不生效,可以将外层容器换成Stack可以解决这个问题。
## 焦点事件onBlur/onFocus回调无法触发
适用于 OpenHarmony 3.2 Beta5 API 9
**问题现象**
焦点事件onBlur/onFocus回调无法触发
**解决措施**
焦点事件默认情况下需要外接键盘的Tab键,或方向键触发,点击触发焦点事件需要添加焦点控制属性focusOnTouch。
**参考链接**
[焦点控制](../reference/arkui-ts/ts-universal-attributes-focus.md)
## scroll里面套一个grid,怎么禁用grid的滑动事件
适用于 OpenHarmony 3.2 Beta5 API 9
可以通过onScrollFrameBegin事件和scrollBy方法实现容器嵌套滚动。
可参考:[容器嵌套滚动样例](../reference/arkui-ts/ts-container-scroll.md#示例2)
## 如何实现一个组件不停地旋转
适用于 OpenHarmony 3.2 Beta5 API 9
可以通过[属性动画](../reference/arkui-ts/ts-animatorproperty.md)的方式实现。
## 列表目前无法键盘上下滑动,是否能力不支持
适用于 OpenHarmony 3.2 Beta5 API 9
**问题现象**
列表目前无法键盘上下滑动,是否能力不支持
**解决措施**
有以下两种方案:
1. 需要在列表子项中添加focusable\(true\)进行获焦。
2. 在每个item的外层嵌套一个可获焦组件,例如Button。
## 键盘移动焦点对象按下enter,为什么不会触发点击事件?
适用于 OpenHarmony 3.2 Beta5 API 9
组件的内置的点击事件和开发者自定义的onClick点击事件默认会和空格键绑定,并非与enter键绑定(UX规格)
## 多层组件嵌套button,如何阻止事件传递
适用于 OpenHarmony 3.2 Beta5 API 9
可以通过将button组件绑定参数stopPropagation来控制冒泡传递。
## ArkUI如何通过代码动态创建组件
适用于:OpenHarmony 3.2 Beta5 API 9
**解决措施**
ArkUI使用ArkTS声明式开发范式,开发者无法持有组件实例,在声明时通过渲染控制语法以及动态构建UI元素的方式,控制组件的创建。
**代码示例**
```
// 条件渲染语句创建组件
if(this.isTrue) {
Text("创建文本组件").fontSize(30)
}
// 循环渲染语句创建组件
ForEach(this.nums,(item) => {
Text(item + '').fontSize(30)
},item => JSON.stringify(item))
```
**参考链接**
[渲染控制语法](../quick-start/arkts-rendering-control-overview.md)
## 使用@Builder装饰器包含自定义组件的方法与普通方法的区别是什么
适用于:OpenHarmony 3.2 Beta5 API 9
**解决措施**
@Builder装饰的方法中使用了自定义组件,那么该方法每次被调用时,对应的自定义组件均会重新创建,普通方法中不使用@builder装饰,无法容纳自定义组件。
**参考链接**
[@BuilderParam](../quick-start/arkts-builderparam.md)
## 如何使用@BuilderParam装饰器进行组件传参
适用于:OpenHarmony 3.2 Beta5 API 9
**解决措施**
- 不带参数
对@BuilderParam修饰的属性进行赋值时不带参数(如:content: this.specificParam),则此属性的类型需定义成无返回值的函数(如:@BuilderParam content: \(\) =\> void)。
- 带参数
对@BuilderParam修饰的属性进行赋值时带参数(如:callContent: this.specificParam1\("111"\)),则此属性的类型需定义成any(如:@BuilderParam callContent: any)。
**参考链接**
[@BuilderParam](../quick-start/arkts-builderparam.md)
## 如何监听数组内对象属性变化
适用于:OpenHarmony 3.2 Beta5 API9
**问题现象**
数组内存储对象示例,需要对对象的属性变化进行监听。
**解决措施**
通过@Observed配合@ObjectLink装饰符实现。@Observed用于类,@ObjectLink用于变量。
**代码示例**
1. 在类上使用@Observed。
```
@Observed
class ClassA {
public name: string
public c: number
public id: number
constructor(c: number, name: string = 'OK') {
this.name = name
this.c = c
}
}
```
2. 在组件变量使用@ObjectLink。
```
@Component
struct ViewA {
label: string = 'ViewA1'
@ObjectLink a: ClassA
build() {
Row() {
Button(`ViewA [${this.label}] this.a.c= ${this.a.c} +1`)
.onClick(() => {
this.a.c += 1
})
}.margin({ top: 10 })
}
}
```
**参考链接**
[Observed和ObjectLink数据管理](../quick-start/arkts-observed-and-objectlink.md)
## 子组件使用@Link修饰成员变量时,如何通过父组件传值
适用于:OpenHarmony 3.2 Beta5 API 9
**解决措施**
子组件使用@Link接受父组件的值时,需要使用'\$'建立变量之间的引用关系。才能实现同步。
**代码示例**
@Link语义是从`$`操作符引出,即\$isPlaying是this.isPlaying内部状态的双向数据绑定。当单击子组件PlayButton中的按钮时,@Link变量更改,PlayButton与父组件中的Text和Button将同时进行刷新,同样地,当点击父组件中的Button修改this.isPlaying时,子组件PlayButton与父组件中的Text和Button也将同时刷新。
1. 在父组件使用@State装饰器,传递数据使用\$符创建引用。
```
@Entry
@Component
struct Player {
@State isPlaying: boolean = false
build() {
Column() {
PlayButton({ buttonPlaying: $isPlaying })
Text(`Player is ${this.isPlaying ? '' : 'not'} playing`).fontSize(18)
Button('Parent:' + this.isPlaying)
.margin(15)
.onClick(() => {
this.isPlaying = !this.isPlaying
})
}
}
}
```
2. 在子组件使用@Link接受数据。
```
@Component
struct PlayButton {
@Link buttonPlaying: boolean
build() {
Column() {
Button(this.buttonPlaying ? 'pause' : 'play')
.margin(20)
.onClick(() => {
this.buttonPlaying = !this.buttonPlaying
})
}
}
}
```
**参考链接**
[@Link](../quick-start/arkts-link.md)
## 父组件如何与孙子组件进行状态同步
适用于:OpenHarmony 3.2 Beta5 API 9
**解决措施**
- 方式一(推荐):使用@Provide和@Consume装饰器。在父组件使用@Provide,在孙子组件使用@Consume,可以实现父组件和孙子组件进行双向数据绑定。
- 方式二:使用@State和@Link装饰器。在父组件使用@State,在每一层子组件(子组件和孙子组件)都使用@Link。
**代码示例一**
1. 父组件中使用子组件,通过Provide提供reviewVote参数,供跨级传递给孙子组件。
```
@Entry
@Component
struct Father{
@Provide("reviewVote") reviewVotes: number = 0;
build() {
Column() {
Son()
Button(`Father: ${this.reviewVotes}`)
...
}
}
}
```
2. 子组件中使用孙组件。
```
@Component
struct Son{
build() {
Column() {
GrandSon()
}
}
}
```
3. 孙子组件中使用Consume来接受reviewVote的参数。
```
@Component
struct GrandSon{
@Consume("reviewVote") reviewVotes: number
build() {
Column() {
Button(`GrandSon: ${this.reviewVotes}`)
...
}.width('100%')
}
}
```
**代码示例二**
1. 父组件Father使用@State绑定数据reviewVote。
```
@Entry
@Component
struct Father {
@State reviewVotes: number = 0;
build() {
Column() {
Son({reviewVotes:$reviewVotes})
Button(`Father: ${this.reviewVotes}`)
...
}
}
}
```
2. 子组件Son中使用@Link接受由父组件Father传递的参数reviewVote。
```
@Component
struct Son{
@Link reviewVotes: number;
build() {
Column() {
Grandson({reviewVotes:$reviewVotes})
}
}
}
```
3. 孙子组件GrandSon使用@Link接受由Son组件传递的参数reviewVote。
```
@Component
struct Grandson{
@Link reviewVotes: number;
build() {
Column() {
Button(`Grandson: ${this.reviewVotes}`)
...
}.width('100%')
}
}
```
## Js如何定义callback函数
适用于:OpenHarmony 3.2 Beta5 API 9
**解决措施**
定义个callback函数的样例,**示例如下:**
1. 定义回调函数
```
// 页面中定义个2个参数,空返回的callback函数
myCallback: (a:number,b:string) => void
```
2. 在使用时进行初始化赋值
```
aboutToAppear() {
// callback函数初始化
this.myCallback= (a,b)=>{
console.info(`handle myCallback a=${a},b=${b}`)
}}
```
## 组件需要多次更新时如何优化性能
适用于:OpenHarmony 3.2 Beta5 API 9
**解决措施**
使用状态管理模块,目前已经支持最小化更新,当数据依赖变化时,不再是重新刷新整个自定义组件,而是只更新依赖数据的视图内容。
## 对象中函数的this如何指向外层
适用于:Openharmony 3.2 Beta5 API 9
**解决措施**
通过箭头函数实现。
**代码示例**
```
const obj = {
start:() => {
return this.num
}
}
```
## 如何实现页面加载前从接口获取数据
适用于:Openharmony 3.2 Beta5 API 9
**问题现象**
页面生命周期相关问题,在页面渲染前从接口获取数据,渲染时将数据渲染到页面上。
**解决措施**
在声明周期函数aboutToAppear中使用异步接口获取页面数据,数据变量使用@State修饰,数据获取完成后根据变量自动刷新页面。
**代码示例**
```
@Entry
@Component
struct Test6Page {
// 数据获取成功,会自动刷新页面
@State message: string = 'loading.....'
aboutToAppear(){
// 模拟异步接口获取数据
setTimeout(()=>{
this.message = 'new msg'
},3000)
}
build() {
Row() {
Column() {
Text(this.message)
.fontSize(50)
.fontWeight(FontWeight.Bold)
}
.width('100%')
}
.height('100%')
}
}
```
## Stage模型资源配置文件string.json是否支持配置占位符
适用于:Openharmony 3.2 Beta5 API 9
资源配置文件string.json文件本身不支持配置占位符,可以在对应的页面中通过定义变量,在实际组件使用Resources和变量拼接的方式达到实现占位符的同等效果。
## eTS文件和ts文件的区别
适用于:Openharmony 3.2 Beta5 API 9
**解决措施**
ArkTS基于兼容了TS语法,继承了TS的所有特性,当前,ArkTS在TS的基础上主要扩展了声明式UI能力,让开发者能够以更简洁、更自然的方式开发高性能应用。推荐用ArtTS开发UI相关内容,TS可以用来开发业务逻辑相关内容。
**参考链接**
[初识ArkTS](../quick-start/arkts-get-started.md)
## ArkTS如何发送邮箱验证码
适用于:Openharmony 3.2 Beta5 API 9
**问题现象**
ArkTS语言如何给邮箱发送邮箱验证码?用哪个接口?
**解决措施**
发送验证码需要请求服务端,然后服务端调用对应的短信验证码接口来实现该功能。可以通过短信服务实现相关功能。
## 如何将传感器的数据实时显示在UI的Text中
适用于:Openharmony 3.2 Beta5 API9
**问题现象**
ArkUI(ets)如何将传感器的数据实时显示在UI的Text中。
**解决措施**
传感器返回数据类型为double,可将double转为string,再显示在text中。
## 如何监听屏幕旋转
适用于:Openharmony 3.2 Beta5 API 9
**问题现象**
应用想监听屏幕是否进行旋转操作。
**解决措施**
屏幕旋转可使用媒体查询接口进行监听。
```
import mediaquery from '@ohos.mediaquery'
let listener = mediaquery.matchMediaSync('(orientation: landscape)'); //监听横屏事件
function onPortrait(mediaQueryResult) {
if (mediaQueryResult.matches) {
// do something here
} else {
// do something here
}
}
listener.on('change', onPortrait) // 注册回调
listener.off('change', onPortrait) // 去注册回调
```
**参考链接**
[媒体查询](../reference/apis/js-apis-mediaquery.md)
## DevEco Studio 升级到最新后ForEach不能遍历全部数据
适用于:Openharmony 3.2 Beta5 API 9
**问题现象**
升级DevEco Studio后,ForEach无法遍历全部数据。
**解决措施**
forEach\(\)功能进行了增强,其第三个参数keyGenerator如果传入参数时,需要确保数据源array中的每个元素生成的key不同,才能正常遍历。如果生成的key相同,则只能生成一个。
该第三个参数也可以不传,系统采用默认生成方式,也可以正常遍历出全部元素。
## 创建的单例换了页面后不生效问题
适用于:Openharmony 3.2 Beta5 API 9
**问题现象**
单例只有在同一个流程中才有效,换了页面后之前的实例都全是undefined。
**解决措施**
对于每个Page都会生成一个js文件,定义的单例会在每个js中都生成一份,所以单例的作用范围只是Page的范围。
如果想共享一个实例,创建范围需要提升至UIAbility或者App级别。
## 如何将时间格式的字符串string转换为Date对象
适用于:Openharmony 3.2 Beta5 API 9
**解决措施**
如果字符string满足格式“yyyy-MM-dd”格式,则可直接使用函数new Date\("yyyy-MM-dd"\)来获取对应的Date对象。
```
new Date("2021-05-23");
new Date("2020/2/29");
new Date("2020-14-03");
new Date("14-02-2021");
```
其他格式字符串可使用new Date\(year:number,month:number,day?:number,hour?:number,mintue?:number,second?:number,ms?:number\)方法来获取Date对象。
```
根据参数创建日期的语法:
new Date(yearValue, IndexOfMonth, dayValue, hours, minutes, seconds)
```
其中每一个参数换算为对应时间参数传入即可。
- yearValue:应符合 ISO 8061 YYYY 格式。例如 2021。如果我们以 YY 格式指定一个值,它将会被错误地接受。例如,仅将 2021 提到 21 会被认为是 1921 年而不是 2021 年。
- IndexOfMonth:从索引 0 开始。因此,从 Month 值中减去 1。例如,对于 3 月,该值为 3,但 monthIndex 将为 2(即 3-1 = 2)。本月指数通常应在 0-11 范围内
- dayValue:表示一个月中的某天。它应在 1-31 范围内,具体取决于一个月中的天数。例如:对于 21-05-2021,日期值为 21
- hours:一天中的小时。例如 10 点。
- minutes:过去一个小时的分钟数
- seconds:保留超过一分钟的秒数。
## ArkTS如何把string转为byte数组
适用于:Openharmony 3.2 Beta5 API 9
**解决措施**
参考如下代码实现,示例:
```
stringToArray(str:string) {
var arr = [];
for(var i = 0,j = str.length;i<j;++i) {
arr.push(str.charCodeAt(i))
}
return arr;
}
```
## ArkTS如何实现字符串编解码
适用于:Openharmony 3.2 Beta5 API 9
**解决措施**
通过util工具函数模块中的TextEncoder和TextDecoder进行解码。
**参考链接**
[TextEncoder](../reference/apis/js-apis-util.md#textencoder)[TextDecoder](../reference/apis/js-apis-util.md#textdecoder)
## 如何导入和导出namespace命名空间
适用于:Openharmony 3.2 Beta5 API 9
**解决措施**
通过export和import导入导出
- namespace导数据库出
```
namespace Util{
export function getTime(){
return Date.now()
}
}
export default Util
```
- namespace导入
```
import Util from './util'
Util.getTime()
```
## worker线程中能否进行关系型数据库的操作
适用于:Openharmony 3.2 Beta5 API 9
当前不支持将UI主线程中的rdb数据库对象发送给Worker线程后进行操作。Worker线程中使用rdb数据库,需要重新获取rdb数据库的对象。
## 如何获取应用resource目录下的文件
适用于:Openharmony 3.2 Beta5 API 9
**解决措施**
- 方式一:使用\$r或者\$rawfile访问。适合静态访问,程序运行时不改变资源路径。
- 方式二:使用ResourceManage访问。适合动态访问,程序运行时可动态改变资源路径。
**参考链接**
[资源访问](../quick-start/resource-categories-and-access.md)[资源管理](../reference/apis/js-apis-resource-manager.md#getstring)
## XML格式如何转为JSON格式
适用于:Openharmony 3.2 Beta5 API 9
**问题现象**
服务端返回的数据是通过base64编码后XML格式,需要转为JSON格式进行后续的处理。
**解决措施**
使用util工具中的base64相关接口进行解码操作,然后使用convertxml组件解析XML格式数据。
**代码示例**
```
import convertxml from '@ohos.convertxml';
import util from '@ohos.util';
@Entry
@Component
struct Faq_4_31 {
@State message: string = 'base64转json'
build() {
Row() {
Column() {
Text(this.message)
.fontSize(50)
.fontWeight(FontWeight.Bold)
.onClick(() => {
/* 原数据,GBK编码
<?xml version="1.0" encoding="GBK"?>
<data>
<asset_no>xxxxx</asset_no>
<machine_sn>xxxx</machine_sn>
<bios_id>xxxx</bios_id>
<responsible_emp_name><![CDATA[xxxx]]></responsible_emp_name>
<responsible_account><![CDATA[xxxx xxxx]]></responsible_account>
<responsible_emp_no>xxxx</responsible_emp_no>
<responsible_dept><![CDATA[xxxx]]></responsible_dept>
<user_dept><![CDATA[xxxx]]></user_dept>
<user_name><![CDATA[xxx]]></user_name>
<cur_domain_account>xxxx</cur_domain_account>
<asset_loc><![CDATA[--]]></asset_loc>
<asset_loc_cur><![CDATA[]]></asset_loc_cur>
<asset_type>1</asset_type>
<asset_use>For Outsourcing Staff/xxxx</asset_use>
<overdue_date></overdue_date>
<asset_status>xxxx</asset_status>
<asset_period>xxxx</asset_period>
<license></license>
</data>
*/
let src = 'PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iR0JLIj8+CjxkYXRhPgo8YXNzZXRfbm8+eHh4eHg8L2Fzc2V0X25vPgo8bWFjaGluZV9zbj54eHh4PC9tYWNoaW5lX3NuPgo8Ymlvc19pZD54eHh4PC9iaW9zX2lkPgo8cmVzcG9uc2libGVfZW1wX25hbWU+PCFbQ0RBVEFbeHh4eF1dPjwvcmVzcG9uc2libGVfZW1wX25hbWU+CjxyZXNwb25zaWJsZV9hY2NvdW50PjwhW0NEQVRBW3h4eHggeHh4eF1dPjwvcmVzcG9uc2libGVfYWNjb3VudD4KPHJlc3BvbnNpYmxlX2VtcF9ubz54eHh4PC9yZXNwb25zaWJsZV9lbXBfbm8+CjxyZXNwb25zaWJsZV9kZXB0PjwhW0NEQVRBW3h4eHhdXT48L3Jlc3BvbnNpYmxlX2RlcHQ+Cjx1c2VyX2RlcHQ+PCFbQ0RBVEFbeHh4eF1dPjwvdXNlcl9kZXB0Pgo8dXNlcl9uYW1lPjwhW0NEQVRBW3h4eF1dPjwvdXNlcl9uYW1lPgo8Y3VyX2RvbWFpbl9hY2NvdW50Pnh4eHg8L2N1cl9kb21haW5fYWNjb3VudD4KPGFzc2V0X2xvYz48IVtDREFUQVstLV1dPjwvYXNzZXRfbG9jPgo8YXNzZXRfbG9jX2N1cj48IVtDREFUQVtdXT48L2Fzc2V0X2xvY19jdXI+Cjxhc3NldF90eXBlPjE8L2Fzc2V0X3R5cGU+Cjxhc3NldF91c2U+Rm9yIE91dHNvdXJjaW5nIFN0YWZmL3h4eHg8L2Fzc2V0X3VzZT4KPG92ZXJkdWVfZGF0ZT48L292ZXJkdWVfZGF0ZT4KPGFzc2V0X3N0YXR1cz54eHh4PC9hc3NldF9zdGF0dXM+Cjxhc3NldF9wZXJpb2Q+eHh4eDwvYXNzZXRfcGVyaW9kPgo8bGljZW5zZT48L2xpY2Vuc2U+CjwvZGF0YT4='
let base64 = new util.Base64Helper();
// base解码
let src_uint8Array = base64.decodeSync(src);
// 解码为utf-8的字符串
let textDecoder = util.TextDecoder.create("utf-8",{ignoreBOM: true})
let src_str = textDecoder.decodeWithStream(src_uint8Array)
//替换encoding字段
src_str = src_str.replace("GBK","utf-8")
console.log('Test src_str: ' + JSON.stringify(src_str));
// 转换 xml-> json
let conv = new convertxml.ConvertXML();
let options = {trim : false, declarationKey:"_declaration",
instructionKey : "_instruction", attributesKey : "_attributes",
textKey : "_text", cdataKey:"_cdata", doctypeKey : "_doctype",
commentKey : "_comment", parentKey : "_parent", typeKey : "_type",
nameKey : "_name", elementsKey : "_elements"}
let src_json = JSON.stringify(conv.convertToJSObject(src_str, options));
console.log('Test json: ' + JSON.stringify(src_json));
})
}
.width('100%')
}
.height('100%')
}
}
```
## 通过try/catch语句获取到错误码401是什么意思
适用于:Openharmony 3.2 Beta5 API 9
**问题原因**
1. 必选参数没有传入。
2. 参数类型错误。
3. 参数为undefined。
**参考链接**
[通用错误码](../reference/errorcodes/errorcode-universal.md)
# ArkUI组件开发常见问题(ArkTS)
## 自定义弹窗能否在ts文件中定义和使用
适用于:OpenHarmony 3.2 Beta5 API 9
自定义弹窗的定义和初始化需要用到属于ArkTS语法内容,必须在ets后缀文件中定义使用,不能在ts后缀文件中定义使用。
**参考链接**
[自定义弹窗](../reference/arkui-ts/ts-methods-custom-dialog-box.md)
## 自定义弹窗中的变量如何传递给页面
适用于:OpenHarmony 3.2 Beta5 API 9
**问题现象**
在自定义弹窗内定义的变量内容,在关闭弹窗或变量变化时需要及时传递给页面,可以通过何种方式传递?
**解决措施**
- 方式一:使用组件的状态变量传递。
- 方式二:在初始化弹窗时,传递一个方法给自定义弹窗,在自定义弹窗中触发该方法,弹窗中变量作为方法的参数。
- 方式三:使用AppStorage或LocalStorage方式管理页面状态,实现自定义弹窗和页面之间状态的共享。
**代码示例**
- 方式一:
```
@CustomDialog
struct CustomDialog01 {
@Link inputValue: string
controller: CustomDialogController
build() {
Column() {
Text('Change text').fontSize(20).margin({ top: 10, bottom: 10 })
TextInput({ placeholder: '', text: this.inputValue }).height(60).width('90%')
.onChange((value: string) => {
this.inputValue = value
})
}
}
}
@Entry
@Component
struct DialogDemo01 {
@State inputValue: string = 'click me'
dialogController: CustomDialogController = new CustomDialogController({
builder: CustomDialog01({
inputValue: $inputValue
})
})
build() {
Column() {
Button(this.inputValue)
.onClick(() => {
this.dialogController.open()
}).backgroundColor(0x317aff)
}.width('100%').margin({ top: 5 })
}
}
```
- 方式二:
```
@CustomDialog
struct CustomDialog02 {
private inputValue: string
changeInputValue: (val: string) => void
controller: CustomDialogController
build() {
Column() {
Text('Change text').fontSize(20).margin({ top: 10, bottom: 10 })
TextInput({ placeholder: '', text: this.inputValue }).height(60).width('90%')
.onChange((value: string) => {
this.changeInputValue(value)
})
}
}
}
@Entry
@Component
struct DialogDemo02 {
@State inputValue: string = 'click me'
dialogController: CustomDialogController = new CustomDialogController({
builder: CustomDialog02({
inputValue: this.inputValue,
changeInputValue: (val: string) => {
this.inputValue = val
}
})
})
build() {
Column() {
Button(this.inputValue)
.onClick(() => {
this.dialogController.open()
}).backgroundColor(0x317aff)
}.width('100%').margin({ top: 5 })
}
}
```
- 方式三:
```
let storage = LocalStorage.GetShared()
@CustomDialog
struct CustomDialog03 {
@LocalStorageLink('inputVal') inputValue: string = ''
controller: CustomDialogController
build() {
Column() {
Text('Change text').fontSize(20).margin({ top: 10, bottom: 10 })
TextInput({ placeholder: '', text: this.inputValue }).height(60).width('90%')
.onChange((value: string) => {
this.inputValue = value;
})
}
}
}
@Entry(storage)
@Component
struct DialogDemo03 {
@LocalStorageLink('inputVal') inputValue: string = ''
dialogController: CustomDialogController = new CustomDialogController({
builder: CustomDialog03()
})
build() {
Column() {
Button(this.inputValue)
.onClick(() => {
this.dialogController.open()
}).backgroundColor(0x317aff)
}.width('100%').margin({ top: 5 })
}
}
```
## 如何获取组件的宽高
适用于:OpenHarmony 3.2 Beta5 API 9
**问题现象**
组件的宽高信息用于计算布局区域大小以及偏移量等内容,如何获取宽高信息?
**解决措施**
- 方式一:使用组件区域变化事件onAreaChange,在组件初始化或组件尺寸发生变化时触发。
- 方式二:在点击或触摸事件中,事件的回调信息中存在目标元素的区域信息。
**参考链接**
[组件区域变化事件](../reference/arkui-ts/ts-universal-component-area-change-event.md)[点击事件](../reference/arkui-ts/ts-universal-events-click.md)[触摸事件](../reference/arkui-ts/ts-universal-events-touch.md)
## 如何一键清空TextInput、TextArea组件内容
适用于:OpenHarmony 3.2 Beta5 API 9
**问题现象**
TextInput,TextArea组件输入多字符后,需要实现点击清空。
**解决措施**
将状态变量赋值给TextInput或TextArea组件的text属性,在做点击清空事件时为状态变量赋值空字符串。
**代码示例**
```
struct Index {
@State text: string = 'Hello World'
controller: TextInputController = new TextInputController()
build() {
Row() {
Column() {
TextInput({ placeholder: 'Please input your words.', text: this.text,
controller:this.controller}).onChange((value) => {
this.text = value
})
Button("Clear TextInput").onClick(() => {
this.text = "";
})
}
.width('100%')
}
.height('100%')
}
}
```
## 如何设置自定义弹窗位置
适用于:OpenHarmony 3.2 Beta5 API 9
**问题现象**
自定义弹窗当前默认在窗口居中显示,当自定义弹窗需要与窗口边框对齐是需要设置自定义弹窗的对齐方式。
**解决措施**
初始化自定义弹窗时,通过alignment参数设置对齐方式,通过offset设置弹窗偏移量。
**参考链接**
[自定义弹窗](../reference/arkui-ts/ts-methods-custom-dialog-box.md)
## 如何隐藏容器组件的溢出内容
适用于:OpenHarmony 3.2 Beta5 API 9
**问题现象**
当容器组件内容溢出时,表现为子组件边缘超出容器组件,需要进行隐藏设置。
**解决措施**
将通用属性-形状裁剪clip属性设置为true,表示按照容器边缘轮廓进行裁剪。此属性默认为false,表示不进行裁剪隐藏。
**参考链接**
[形状裁剪](../reference/arkui-ts/ts-universal-attributes-sharp-clipping.md)
## 自定义弹窗大小如何自适应内容
适用于:OpenHarmony 3.2 Beta5 API 9
**问题现象**
当自定义弹窗中存在可变化区域大小的子组件时,弹窗大小需要跟随自适应。
**解决措施**
- 方式一:采用弹窗容器默认样式。在默认样式中,弹窗容器高度自适应子节点,最大可为窗口高度的90%;弹窗容器的宽度根据栅格系统自适应,不跟随子节点变化。
- 方式二:当显示设置customStyle为true时,弹窗宽高跟随子节点内容适应。
**参考链接**
[自定义弹窗](../reference/arkui-ts/ts-methods-custom-dialog-box.md)
## 如何理解自定义弹窗中的gridCount参数
适用于:OpenHarmony 3.2 Beta5 API 9
gridCount参数是指弹窗宽度占栅格列数的个数。系统把窗口宽等分,等分的份数即为栅格列数,不同设备栅格列数不同。比如手机屏幕密度值在320vp<=水平宽度<600vp,所以栅格列数是4,则gridCount的有效值在\[1, 4\]
注意:仅采用弹窗默认样式时设置有效。
**参考链接**
[自定义弹窗](../reference/arkui-ts/ts-methods-custom-dialog-box.md)
## 如何去除自定义弹窗的白色背景
适用于:OpenHarmony 3.2 Beta5 API 9
**问题现象**
使用自定义弹窗时,默认样式中存在白色背景。
**解决措施**
需要采用自定义样式来消除自定义弹窗的白色背景:
1. 在初始化自定义弹窗时设置customStyle为true。
2. 在定义弹窗时设置组件背景色backgroundColor。
**参考链接**
[自定义弹窗](../reference/arkui-ts/ts-methods-custom-dialog-box.md)
## TextInput组件密码模式下,右边的眼睛图标能否支持自定义
适用于:OpenHarmony 3.2 Beta5 API 9
**问题现象**
TextInput组件设置type为InputType.Password时,右侧出现眼睛图标,不能修改图标样式。
**解决措施**
当前图标不支持自定义,可使用TextInput的showPasswordIcon属性隐藏图标,使用Image组件替代控制TextInput组件的type。
**参考链接**
[TextInput组件](../reference/arkui-ts/ts-basic-components-textinput.md)
## TextInput的onSubmit事件如何使用
适用于:OpenHarmony 3.2 Beta5 API 9
**问题现象**
TextInput的onSubmit事件怎么触发,以及事件回调的参数类型代表的含义。
**解决措施**
onSubmit事件在外接键盘或软键盘回车时触发该回调,回调的参数为当前软键盘回车键类型。通过TextInput的enterKeyType属性可以设置输入法回车键类型,软键盘回车键样式需要输入法的支持。
**参考链接**
[TextInput组件](../reference/arkui-ts/ts-basic-components-textinput.md)
## TextInput在聚焦时如何使光标回到起点
适用于:OpenHarmony 3.2 Beta5 API 9
**问题现象**
TextInput组件在聚焦时,光标位置会自动根据触摸点位置变化,如何使得聚焦时光标固定显示在起点位置?
**解决措施**
1. TextInput组件绑定onEditChange事件,该事件TextInput可进行输入时触发。
2. 在事件回调用TextInputController.caretPosition方法设置光标位置,不过需要用到setTimeout延迟方法。
**代码示例**
```
@Entry
@Component
struct TextInputDemo {
controller: TextInputController = new TextInputController()
build() {
Column() {
TextInput({ controller: this.controller })
.onEditChange((isEditing: boolean) => {
if (isEditing) {
setTimeout(() => {
this.controller.caretPosition(0)
}, 100)
}
})
}
}
}
```
**参考链接**
[TextInput组件](../reference/arkui-ts/ts-basic-components-textinput.md)
## 如何获取可滚动组件的当前滚动偏移量
适用于:OpenHarmony 3.2 Beta5 API 9
**问题现象**
可滚动组件包含List,Grid,Scroll等,在发生滚动时如何获取滚动偏移量?
**解决措施**
1. 可滚动组件在初始化时可设置scroller参数,绑定滚动控制器。
2. 通过控制器的currentOffset方法可获取水平和竖直方向的滚动偏移量。
**参考链接**
[Scroll](../reference/arkui-ts/ts-container-scroll.md#currentoffset)
## 如何实现文本竖向排列
适用于:OpenHarmony 3.2 Beta5 API 9
**问题现象**
使用Text组件时,无法将文本排列方向设置为竖向排列。
**解决措施**
Text组件当前文本排列方向固定为横向排列,要设置为竖向排列,可将文件拆分,使用Flex容器组件装填,设置主轴方向为竖向。
**代码示例**
```
@Entry
@Component
struct Index15 {
private message: string = '本文档适用于HarmonyOS应用开发的初学者。通过构建一个简单的具有页面跳转/返回功能的应用,快速了解工程目录的主要文件,熟悉HarmonyOS应用开发流程。';
build() {
Flex({ direction: FlexDirection.Column, wrap: FlexWrap.Wrap }) {
ForEach(this.message.split(''), (item, index) => {
Text(item)
.fontSize(30)
.flexShrink(0)
})
}
}
}
```
## 如何将Ability的UI界面设置成透明
适用于:OpenHarmony 3.2 Beta5,API9
**问题现象**
如何设置Ability的UI界面为透明
**解决措施**
将最上层容器组件背景色设置为透明,然后通过设置XComponent组件的opacity属性值为0.01来实现。
示例:
```
build() {
Stack() {
XComponent({
id: 'componentId',
type: 'surface',
})
.width('100%')
.height('100%')
.opacity(0.01)
// 页面内容
}
.width('100%')
.height('100%')
.backgroundColor('rgba(255,255,255, 0)')
}
```
## constraintSize尺寸设置不生效
适用于:Openharmony 3.2 Beta5 API 9 stage模型
**问题现象**
constraintSize约束组件尺寸时,子组件内设置百分比宽度,例如width\('100%'\)会采用constraintSize约束中的最大宽乘百分比,导致撑开组件,看起来constraintSize设置没生效。
**解决措施**
可以在外层使用Scroll组件,设置constraintSize,当子组件占用空间超过设置的约束值时,会显示滚动条。
## 如何将背景颜色设置为透明
适用于:OpenHarmony 3.2 Beta5 API 9
**解决措施**
将backgroundColor设置为 '\#00000000'。
## Scroll组件滚动到达不了最底部
适用于:OpenHarmony 3.2 Beta5 API 9 Stage模型
**问题现象**
Scroll组件在未设置高度情况下,默认为窗口高度,当滚动区域外存在其他组件时,滚动底部区域会出现遮挡。
**解决措施**
Scroll组件需要设置Scroll高度,或者使用Flex布局限制Scroll高度。
## backgroundImage如何设置CenterCrop
适用于:OpenHarmony 3.2 Beta5 API 9 Stage模型
**问题现象**
CenterCrop是android中imageView,scaletype的设置,主要保证图片等比缩放裁剪,位置保持居中,要达到相同效果,应该怎么处理?
**解决措施**
可以使用通用属性backgroundImageSize\(ImageSize.cover\)和backgroundImagePosition\(Alignment.Center\)达到相同效果。
## 如何自定义Video组件控制栏样式
适用于:OpenHarmony 3.2 Beta5 API 9 Stage模型
**解决措施**
1. 通过设置属性controls为false关闭默认控制栏。
2. 设置Video组件的controller。
3. 通过ArkTS实现自定义的控制栏,并通过VideoController控制视频播放。
**代码示例**
```
// xxx.ets
@Entry@Componentstruct VideoCreateComponent {
@State videoSrc: Resource = $rawfile('video1.mp4')
@State previewUri: Resource = $r('app.media.poster1')
@State curRate: PlaybackSpeed = PlaybackSpeed.Speed_Forward_1_00_X
@State isAutoPlay: boolean = false
@State showControls: boolean = true
controller: VideoController = new VideoController()
build() {
Column() {
Video({
src: this.videoSrc,
previewUri: this.previewUri,
currentProgressRate: this.curRate,
controller: this.controller
}).width('100%').height(600)
.autoPlay(this.isAutoPlay)
.controls(this.showControls)
.onStart(() => {
console.info('onStart')
})
.onPause(() => {
console.info('onPause')
})
.onFinish(() => {
console.info('onFinish')
})
.onError(() => {
console.info('onError')
})
.onPrepared((e) => {
console.info('onPrepared is ' + e.duration)
})
.onSeeking((e) => {
console.info('onSeeking is ' + e.time)
})
.onSeeked((e) => {
console.info('onSeeked is ' + e.time)
})
.onUpdate((e) => {
console.info('onUpdate is ' + e.time)
})
Row() {
Button('src').onClick(() => {
this.videoSrc = $rawfile('video2.mp4') // 切换视频源
}).margin(5)
Button('previewUri').onClick(() => {
this.previewUri = $r('app.media.poster2') // 切换视频预览海报
}).margin(5)
Button('controls').onClick(() => {
this.showControls = !this.showControls // 切换是否显示视频控制栏
}).margin(5)
}
Row() {
Button('start').onClick(() => {
this.controller.start() // 开始播放
}).margin(5)
Button('pause').onClick(() => {
this.controller.pause() // 暂停播放
}).margin(5)
Button('stop').onClick(() => {
this.controller.stop() // 结束播放
}).margin(5)
Button('setTime').onClick(() => {
this.controller.setCurrentTime(10, SeekMode.Accurate) // 精准跳转到视频的10s位置
}).margin(5)
}
Row() {
Button('rate 0.75').onClick(() => {
this.curRate = PlaybackSpeed.Speed_Forward_0_75_X // 0.75倍速播放
}).margin(5)
Button('rate 1').onClick(() => {
this.curRate = PlaybackSpeed.Speed_Forward_1_00_X // 原倍速播放
}).margin(5)
Button('rate 2').onClick(() => {
this.curRate = PlaybackSpeed.Speed_Forward_2_00_X // 2倍速播放
}).margin(5)
}
}
}}
```
**参考链接**
[Video](../reference/arkui-ts/ts-media-components-video.md#start)
## 如何设置组件不同状态下的样式
**问题现象**
对应组件的不同状态(如无状态、按下、禁用、聚焦、点击),显示不同的样式。
**解决措施**
使用多态样式,在组件的StateStyles接口中,定义组件不同状态下的样式。
**代码示例**
```
//xxx.ts
@Entry
@Component
struct StyleExample {
@State isEnable: boolean = true;
@Styles pressedStyles() {
.backgroundColor("#ED6F21")
.borderRadius(10)
.borderStyle(BorderStyle.Dashed)
.borderWidth(2)
.borderColor('#33000000')
.width(120)
.height(30)
.opacity(1)
}
build() {
Flex({direction: FlexDirection.Column, alignItems: ItemAlign.Center}) {
Text("pressed")
.backgroundColor('#0A59F7')
.borderRadius(20)
.borderStyle(BorderStyle.Dotted)
.borderWidth(2)
.borderColor(Color.Red)
.width(100)
.height(25)
.opacity(1)
.fontSize(14)
.fontColor(Color.White)
.stateStyles({
pressed: this.pressedStyles
})
.margin({
bottom: 20
})
.textAlign(TextAlign.Center)
}
.width(350)
.height(300)
}
}
```
**参考链接**
[多态样式](../reference/arkui-ts/ts-universal-attributes-polymorphic-style.md)
## Scroll内Flex加宽高与滑动冲突
适用于:OpenHarmony 3.2 Beta5 API 9 Stage模型
**问题现象**
当在Scroll组件中添加容器组件,并设置该容器组件的尺寸时,会破坏滚动布局。
**解决措施**
Scroll组件中的容器组件不设置尺寸,大小由内容撑开。
## 父组件中如何处理子组件内点击事件
适用于:OpenHarmony 3.2 Beta5 API 9 Stage模型
在父组件中初始化子组件时,将父组件中定义的方法,传递给子组件,在子组件中调用该方法,类似于变量传递。
**代码示例**
```
class Model {
value: string
}
@Entry
@Component
struct EntryComponent {
test() {
console.log('testTag test in my component');
}
build() {
Column() {
MyComponent({ title: { value: 'Hello World 2' }, count: 7, onClick: this.test }) //初始化时传递定义的方法
}
}
}
@Component
struct MyComponent {
@State title: Model = { value: 'Hello World' }
@State count: number = 0
onClick: any;
private toggle: string = 'Hello World'
private increaseBy: number = 1
build() {
Column() {
Text(`${this.title.value}`).fontSize(30)
Button(`Click to increase count=${this.count}`)
.margin(20)
.onClick(() => {
// 修改内部状态变量count
this.count += this.increaseBy
this.onClick.call();
})
}
}
}
```
## 如何主动拉起软键盘
适用于OpenHarmony 3.2 Beta5 API 9
**解决措施**
可以通过focusControl.requestFocus控制输入框获焦,组件获焦后会自动弹起软键盘
**参考链接**
焦点控制:[焦点控制](../reference/arkui-ts/ts-universal-attributes-focus.md)
# ArkUI框架开发常见问题(JS)
## 用数组变量控制组件属性不生效
适用于:OpenHarmony,IDE 3.0.0.993,API 8
目前类web范式对数组中元素的修改不会被监听,因此不会触发页面刷新 ,需要产生数组对象的修改才可以触发页面刷新。所以,使用test1\(\)对修改数组的引用时,button组件会被禁用,使用test2\(\)修改数组中某个元素,对控制button组件disabled属性的数组单元赋值,button组件并不会被禁用。除了test1\(\)中对数组整体赋值,我们还可以使用修改数组的方法,如splice\(\),也可以达到页面刷新的效果。
```
test1() {this.isDisabled = [true, true, true, true, true]; //该语句可实现对button组件的禁用
test2() {this.isDisabled[0] = true; //该语句对button组件的禁用不生效
```
## input组件是否支持设置文本居中对齐
适用于:OpenHarmony 3.2 Beta5 API 9 FA模型
**问题现象**
input组件中输入的文本如何实现文本居中对齐格式,使用text-align没有效果。
**解决措施**
input组件属于类web范式组件,不_支_持设置文本对齐方式,text-align样式只针对text组件生效。
**参考链接**
[input组件](../reference/arkui-js/js-components-basic-input.md)[text组件](../reference/arkui-js/js-components-basic-text.md)
## 如何判断JS对象中是否存在某个值
适用于:OpenHarmony 3.2 Release API 9
**解决措施**
Object.values\(对象名\).indexOf\(想要判断的值\),若返回-1表示不包含对应值,返回值不等于-1则表示包含。
\ No newline at end of file
# ArkUI布局开发常见问题(ArkTS)
## 使用position之后height不生效
适用于 OpenHarmony 3.2 Beta5 API 9
**解决措施**
容器组件在使用position之后会脱离文本流,导致容器脱离外层容器束缚,导致height不生效,可以将外层容器换成Stack可以解决这个问题。
## Grid组件如何实现横向滚动
适用于 OpenHarmony 3.2 Beta5 API 9
将Grid组件设置当前网格布局行数rowsTemplate且不设置列数,当内容超出Grid组件宽度时,Grid可横向滚动进行内容展示。
## List组件与其他组件并列使用时,若未设置List滚动方向上的尺寸,无法拖动到底部
适用于 OpenHarmony 3.2 Beta5 API 9
给List加上layoutWeight属性,设置列表自适应占满剩余高度。原理:List属于可滚动容器组件,默认高度是占满全屏幕高度,当出现其他固定高度的组件占领了屏幕的部分高度时,需要开发人员显性的指定List组件占满剩余高度,而不是全屏幕高度。
## Tabs组件在点击Tab项时是否支持禁止切换
适用于 OpenHarmony 3.2 Release API 9
不支持。
## 如何拦截住onBackPress事件,不触发页面返回
适用于 OpenHarmony 3.2 Release API 9
在onBackPress中返回true表示页面自己处理返回逻辑,不会执行默认的返回逻辑。
可参考[自定义组件的生命周期-onBackPress](../reference/arkui-ts/ts-custom-component-lifecycle.md#onbackpress)
## List组件怎么实现分组列表的粘性标题效果
适用于 OpenHarmony 3.2 Release API 9
可以通过List组件的sticky属性配合ListItemGroup组件来实现。通过给List组件设置sticky属性为StickyStyle.Header,设置ListItemGroup中header参数对应的头部组件呈现粘性标题效果
可参考:[创建列表-添加粘性标题](../ui/arkts-layout-development-create-list.md#添加粘性标题)
# ArkUI路由/导航开发常见问题(ArkTS)
## router中params无法正常传递class对象
适用于:OpenHarmony 3.2 Beta5 ,API 9 Stage模型
只能传递对象中的属性,无法传递对象中的方法。
## 在Stage模型下,如何通过router实现页面跳转
适用于:OpenHarmony 3.2 Beta5 ,API 9 Stage模型
1. 对于通过页面路由router实现页面跳转,首先要在main\_pages.json配置文件中将所有跳转的页面加入pages列表;
2. 页面路由需要在页面渲染完成之后才能调用,在onInit和onReady生命周期中页面还处于渲染阶段,禁止调用页面路由方法。
**参考链接:**[页面路由](../reference/apis/js-apis-router.md)
## router通过调用push方法进堆栈的page是否会被回收
适用于:OpenHarmony 3.2 Beta5 ,API 9 Stage模型
调用push进入堆栈的page不回收,调用back方法出栈后可以被回收。
**参考链接:**[Router传递参数](../reference/apis/js-apis-router.md#routergetparams)
# Native API
Native API是OHOS SDK上提供的一组native开发接口与工具集合,方便开发者使用C或者C++语言实现应用的关键功能。Native API只覆盖了OHOS基础的一些底层能力,如libc,图形库,窗口系统,多媒体,压缩库等,并没有完全提供类似于JS API上的完整的OHOS 平台能力。在应用中使用Native API会编译成动态库打包到应用中。
<br/>
## Native API构成介绍
### Native API目录结构
Native API在SDK包的位置为$(SDK_ROOT)/native目录,主要有以下几个部分组成
|目录|功能说明|
|--|--|
|build|应用中编译动态库的toolchain cmake脚本;这个目录下ohos.toolchain.cmake文件定义了给OHOS交叉编译选项|
|build-tools|放置编译构建的工具,如cmake|
|docs|Native API接口参考文档,通过doxgen从头文件中提取出来|
|llvm|支持OHOS ABI的llvm交叉编译器|
|sysroot|放置编译链接的依赖文件目录,包含头文件,动态库等|
<br/>
### Native API接口
|接口分类|接口功能|引入版本|
|--|--|--|
|标准C库|以musl为基础提供的标准c库接口,当前提供了1500+的接口|8|
|标准C++库|c++运行时库libc++_shared,此库在打包的时候需要打包或者静态链接到应用中|8|
|日志|打印日志到系统的hilog接口|8|
|napi|ArkUI提供的,方便应用开发接入JS应用环境的一组类Node-API,是属于Native API的一部分|8|
|XComponent|ArkUI XComponent组件中的surface与触屏事件接口,方便开发者开发高性能图形应用|8|
|libuv|ArkUI集成的三方的异步IO库|8|
|libz|zlib库,提供基本的压缩,解压接口|8|
|Drawing|系统提供的2D图形库,可以在surface进行绘制|8|
|OpenGL|系统提供的openglv3接口|8|
|Rawfile|应用资源访问接口,可以读取应用中打包的各种资源|8|
|OpenSLES|用于2D,3D音频加速的接口库|8|
|Mindspore|AI模型接口库|9|
|包管理|包服务接口,方便查询应用包信息|8|
Native API中有一部分接口采用开源标准,详细列表见《[Native API中支持的标准库](https://docs.openharmony.cn/pages/v3.1/zh-cn/application-dev/reference/native-lib/third_party_libc/musl.md/)》《[Node_API](https://docs.openharmony.cn/pages/v3.1/zh-cn/application-dev/reference/native-lib/third_party_napi/napi.md/)
## 使用介绍
<br/>
### 建议使用Native API的场景
主要有如下一些
1. 应用性能敏感代码,比如游戏,物理模拟等计算密集型场景
2. 需要复用已有的C或C++库
3. 需要针对CPU特性进行专项定制的库,如neon加速
<br/>
### 不建议使用Native API的场景
1. 写一个纯native的的OHOS应用
2. 希望在尽可能多的OHOS设备上保持兼容的应用
<br/>
# Native API的相关指导
- [Native API hello world]()
- 本例子引导开发者开发一个hello的Native API库,在ts界面上显示出从hello库中获取的字符串
- [Native API介绍](introduction.md)
- [Native API在应用工程中的使用指导](napi-guidelines.md)
- 介绍如何使用各种napi接口与js中的模块,接口,异步任务进行互操作
- [Drawing开发指导](drawing-guidelines.md)
- [Rawfile开发指导](rawfile-guidelines.md)
- [NativeWindow开发指导](native-window-guidelines.md)
......
# Native API 介绍
Native API是OHOS SDK上提供的一组native开发接口与工具集合,方便开发者使用C或者C++语言实现应用的关键功能。Native API只覆盖了OHOS基础的一些底层能力,如libc,图形库,窗口系统,多媒体,压缩库等,并没有完全提供类似于JS API上的完整的OHOS 平台能力。在应用中使用Native API会编译成动态库打包到应用中。
## Native API构成介绍
### Native API目录结构
Native API在SDK包的位置为$(SDK_ROOT)/native目录,主要有以下几个部分组成
|目录|功能说明|
|--|--|
|build|应用中编译动态库的toolchain cmake脚本;这个目录下ohos.toolchain.cmake文件定义了给OHOS交叉编译选项|
|build-tools|放置编译构建的工具,如cmake|
|docs|Native API接口参考文档,通过doxgen从头文件中提取出来|
|llvm|支持OHOS ABI的llvm交叉编译器|
|sysroot|放置编译链接的依赖文件目录,包含头文件,动态库等|
### Native API接口
|接口分类|接口功能|引入版本|
|--|--|--|
|标准C库|以musl为基础提供的标准c库接口,当前提供了1500+的接口|8|
|标准C++库|c++运行时库libc++_shared,此库在打包的时候需要打包或者静态链接到应用中|8|
|日志|打印日志到系统的hilog接口|8|
|napi|ArkUI提供的,方便应用开发接入JS应用环境的一组类Node-API,是属于Native API的一部分|8|
|XComponent|ArkUI XComponent组件中的surface与触屏事件接口,方便开发者开发高性能图形应用|8|
|libuv|ArkUI集成的三方的异步IO库|8|
|libz|zlib库,提供基本的压缩,解压接口|8|
|Drawing|系统提供的2D图形库,可以在surface进行绘制|8|
|OpenGL|系统提供的openglv3接口|8|
|Rawfile|应用资源访问接口,可以读取应用中打包的各种资源|8|
|OpenSLES|用于2D,3D音频加速的接口库|8|
|Mindspore|AI模型接口库|9|
|包管理|包服务接口,方便查询应用包信息|8|
Native API中有一部分接口采用开源标准,详细列表见《[Native API中支持的标准库](../reference/native-lib/third_party_libc/musl.md)》《[Node_API](../reference/native-lib/third_party_napi/napi.md)
## 使用介绍
### 建议使用Native API的场景
主要有如下一些
1. 应用性能敏感代码,比如游戏,物理模拟等计算密集型场景
2. 需要复用已有的C或C++库
3. 需要针对CPU特性进行专项定制的库,如neon加速
### 不建议使用Native API的场景
1. 写一个纯native的的OHOS应用
2. 希望在尽可能多的OHOS设备上保持兼容的应用
......@@ -40,7 +40,7 @@
- [app对象内部结构](app-structure.md)
- [deviceConfig内部结构](deviceconfig-structure.md)
- [module对象内部结构](module-structure.md)
- [资源分类与访问](resource-categories-and-access.md)
- [资源分类与访问](resource-categories-and-access.md)
- 学习ArkTS语言
- [初识ArkTS语言](arkts-get-started.md)
- 基本语法
......
# OpenHarmony应用开发文档
- [应用开发导读](application-dev-guide.md)
- 入门
- 快速入门
......@@ -12,7 +13,6 @@
- 应用程序包结构
- [Stage模型应用程序包结构](quick-start/application-package-structure-stage.md)
- [FA模型应用程序包结构](quick-start/application-package-structure-fa.md)
- [HAR包结构](quick-start/har-structure.md)
- 应用程序包多HAP机制
- [多HAP机制设计目标](quick-start/multi-hap-objective.md)
- [多HAP构建视图](quick-start/multi-hap-build-view.md)
......@@ -20,6 +20,16 @@
- [多HAP使用规则](quick-start/multi-hap-rules.md)
- [多HAP运行机制及数据通信方式](quick-start/multi-hap-principles.md)
- [应用程序包安装和卸载流程](quick-start/application-package-install-uninstall.md)
- [应用程序包更新流程](quick-start/application-package-update.md)
- 共享包
- [共享包概述](quick-start/shared-guide.md)
- [HAR](quick-start/har-package.md)
- HSP
- [应用内HSP开发指导](quick-start/in-app-hsp.md)
- [应用间HSP开发指导(仅对系统应用开放)](quick-start/cross-app-hsp.md)
- 应用程序包快速修复
- [快速修复概述](quick-start/quickfix-principles.md)
- [快速修复调试指导](quick-start/quickfix-debug.md)
- 应用配置文件(Stage模型)
- [应用配置文件概述(Stage模型)](quick-start/application-configuration-file-overview-stage.md)
- [app.json5配置文件](quick-start/app-configuration-file.md)
......@@ -31,46 +41,46 @@
- [module对象内部结构](quick-start/module-structure.md)
- [资源分类与访问](quick-start/resource-categories-and-access.md)
- 学习ArkTS语言
- [初识ArkTS语言](quick-start/arkts-get-started.md)
- 基本语法
- [基本语法概述](quick-start/arkts-basic-syntax-overview.md)
- [声明式UI描述](quick-start/arkts-declarative-ui-description.md)
- 自定义组件
- [创建自定义组件](quick-start/arkts-create-custom-components.md)
- [页面和自定义组件生命周期](quick-start/arkts-page-custom-components-lifecycle.md)
- [\@Builder:自定义构建函数](quick-start/arkts-builder.md)
- [\@BuilderParam:引用\@Builder函数](quick-start/arkts-builderparam.md)
- [\@Styles:定义组件重用样式](quick-start/arkts-style.md)
- [\@Extend:定义扩展组件样式](quick-start/arkts-extend.md)
- [stateStyles:多态样式](quick-start/arkts-statestyles.md)
- 状态管理
- [状态管理概述](quick-start/arkts-state-management-overview.md)
- 管理组件拥有的状态
- [\@State:组件内状态](quick-start/arkts-state.md)
- [\@Prop:父子单向同步](quick-start/arkts-prop.md)
- [\@Link:父子双向同步](quick-start/arkts-link.md)
- [\@Provide和\@Consume:与后代组件双向同步](quick-start/arkts-provide-and-consume.md)
- [\@Observed和\@ObjectLink:嵌套类对象属性变化](quick-start/arkts-observed-and-objectlink.md)
- 管理应用拥有的状态
- [管理应用拥有的状态概述](quick-start/arkts-application-state-management-overview.md)
- [LocalStorage:页面级UI状态存储](quick-start/arkts-localstorage.md)
- [AppStorage:应用全局的UI状态存储](quick-start/arkts-appstorage.md)
- [PersistentStorage:持久化存储UI状态](quick-start/arkts-persiststorage.md)
- [Environment:设备环境查询](quick-start/arkts-environment.md)
- 其他状态管理
- [其他状态管理概述](quick-start/arkts-other-state-mgmt-functions-overview.md)
- [\@Watch:状态变量更改通知](quick-start/arkts-watch.md)
- [$$语法:内置组件双向同步](quick-start/arkts-two-way-sync.md)
- 渲染控制
- [渲染控制概述](quick-start/arkts-rendering-control-overview.md)
- [if/else:条件渲染](quick-start/arkts-rendering-control-ifelse.md)
- [ForEach:循环渲染](quick-start/arkts-rendering-control-foreach.md)
- [LazyForEach:数据懒加载](quick-start/arkts-rendering-control-lazyforeach.md)
- [初识ArkTS语言](quick-start/arkts-get-started.md)
- 基本语法
- [基本语法概述](quick-start/arkts-basic-syntax-overview.md)
- [声明式UI描述](quick-start/arkts-declarative-ui-description.md)
- 自定义组件
- [创建自定义组件](quick-start/arkts-create-custom-components.md)
- [页面和自定义组件生命周期](quick-start/arkts-page-custom-components-lifecycle.md)
- [\@Builder:自定义构建函数](quick-start/arkts-builder.md)
- [\@BuilderParam:引用\@Builder函数](quick-start/arkts-builderparam.md)
- [\@Styles:定义组件重用样式](quick-start/arkts-style.md)
- [\@Extend:定义扩展组件样式](quick-start/arkts-extend.md)
- [stateStyles:多态样式](quick-start/arkts-statestyles.md)
- 状态管理
- [状态管理概述](quick-start/arkts-state-management-overview.md)
- 管理组件拥有的状态
- [\@State:组件内状态](quick-start/arkts-state.md)
- [\@Prop:父子单向同步](quick-start/arkts-prop.md)
- [\@Link:父子双向同步](quick-start/arkts-link.md)
- [\@Provide和\@Consume:与后代组件双向同步](quick-start/arkts-provide-and-consume.md)
- [\@Observed和\@ObjectLink:嵌套类对象属性变化](quick-start/arkts-observed-and-objectlink.md)
- 管理应用拥有的状态
- [管理应用拥有的状态概述](quick-start/arkts-application-state-management-overview.md)
- [LocalStorage:页面级UI状态存储](quick-start/arkts-localstorage.md)
- [AppStorage:应用全局的UI状态存储](quick-start/arkts-appstorage.md)
- [PersistentStorage:持久化存储UI状态](quick-start/arkts-persiststorage.md)
- [Environment:设备环境查询](quick-start/arkts-environment.md)
- 其他状态管理
- [其他状态管理概述](quick-start/arkts-other-state-mgmt-functions-overview.md)
- [\@Watch:状态变量更改通知](quick-start/arkts-watch.md)
- [$$语法:内置组件双向同步](quick-start/arkts-two-way-sync.md)
- 渲染控制
- [渲染控制概述](quick-start/arkts-rendering-control-overview.md)
- [if/else:条件渲染](quick-start/arkts-rendering-control-ifelse.md)
- [ForEach:循环渲染](quick-start/arkts-rendering-control-foreach.md)
- [LazyForEach:数据懒加载](quick-start/arkts-rendering-control-lazyforeach.md)
- 开发
- 应用模型
- 应用模型概述
- [OpenHarmony应用模型的构成要素](application-models/application-model-composition.md)
- [OpenHarmony应用模型解读](application-models/application-model-description.md)
- [应用模型的构成要素](application-models/application-model-composition.md)
- [应用模型解读](application-models/application-model-description.md)
- Stage模型开发指导
- [Stage模型开发概述](application-models/stage-model-development-overview.md)
- Stage模型应用组件
......@@ -85,40 +95,74 @@
- ExtensionAbility组件
- [ExtensionAbility组件概述](application-models/extensionability-overview.md)
- [ServiceExtensionAbility](application-models/serviceextensionability.md)
- [FormExtensionAbility(服务卡片)](application-models/widget-development-stage.md)
- [AccessibilityExtensionAbility](application-models/accessibilityextensionability.md)
- [EnterpriseAdminExtensionAbility](application-models/enterprise-extensionAbility.md)
- [InputMethodExtensionAbility](application-models/inputmethodextentionability.md)
- [WindowExtensionAbility](application-models/windowextensionability.md)
- 服务卡片开发指导(Stage模型)
- [服务卡片概述](application-models/service-widget-overview.md)
- 开发基于ArkTS UI的卡片
- [ArkTS卡片运行机制](application-models/arkts-ui-widget-working-principles.md)
- [ArkTS卡片相关模块](application-models/arkts-ui-widget-modules.md)
- ArkTS卡片开发指导
- [创建一个ArkTS卡片](application-models/arkts-ui-widget-creation.md)
- [配置卡片的配置文件](application-models/arkts-ui-widget-configuration.md)
- [卡片生命周期管理](application-models/arkts-ui-widget-lifecycle.md)
- 开发卡片页面
- [卡片页面能力说明](application-models/arkts-ui-widget-page-overview.md)
- [卡片使用动效能力](application-models/arkts-ui-widget-page-animation.md)
- [卡片使用自定义绘制能力](application-models/arkts-ui-widget-page-custom-drawing.md)
- 开发卡片事件
- [卡片事件能力说明](application-models/arkts-ui-widget-event-overview.md)
- [使用router事件跳转到指定UIAbility](application-models/arkts-ui-widget-event-router.md)
- [使用call事件拉起指定UIAbility到后台](application-models/arkts-ui-widget-event-call.md)
- [通过message事件刷新卡片内容](application-models/arkts-ui-widget-event-formextensionability.md)
- [通过router或call事件刷新卡片内容](application-models/arkts-ui-widget-event-uiability.md)
- 卡片数据交互
- [卡片数据交互说明](application-models/arkts-ui-widget-interaction-overview.md)
- [定时刷新和定点刷新](application-models/arkts-ui-widget-update-by-time.md)
- [刷新本地图片和网络图片](application-models/arkts-ui-widget-image-update.md)
- [根据卡片状态刷新不同内容](application-models/arkts-ui-widget-update-by-status.md)
- [使用方刷新卡片内容(仅对系统应用开放)](application-models/arkts-ui-widget-content-update.md)
- [开发基于JS UI的卡片](application-models/js-ui-widget-development.md)
- [Stage模型服务卡片相关实例](application-models/service-widget-development-samples.md)
- [AbilityStage组件容器](application-models/abilitystage.md)
- [应用上下文Context](application-models/application-context-stage.md)
- 信息传递载体Want
- [Want概述](application-models/want-overview.md)
- [显式Want与隐式Want匹配规则](application-models/explicit-implicit-want-mappings.md)
- [常见action与entities](application-models/actions-entities.md)
- [使用显式Want启动Ability](application-models/ability-startup-with-explicit-want.md)
- [使用显式Want启动应用组件](application-models/ability-startup-with-explicit-want.md)
- [使用隐式Want打开网址](application-models/ability-startup-with-implicit-want.md)
- [应用间使用Want分享数据](application-models/data-share-via-want.md)
- [组件启动规则](application-models/component-startup-rules.md)
- [组件启动规则(Stage模型)](application-models/component-startup-rules.md)
- 应用组件跨设备交互(流转)
- [流转概述](application-models/inter-device-interaction-hop-overview.md)
- [跨端迁移(仅对系统应用开放)](application-models/hop-cross-device-migration.md)
- [多端协同(仅对系统应用开放)](application-models/hop-multi-device-collaboration.md)
- 进程间通信
- [进程模型](application-models/process-model-stage.md)
- [订阅系统环境变量的变化](application-models/subscribe-system-environment-variable-changes.md)
- 了解进程模型
- [进程模型概述](application-models/process-model-stage.md)
- 公共事件
- [公共事件简介](application-models/common-event-overview.md)
- [公共事件订阅](application-models/common-event-subscription.md)
- 公共事件订阅
- [公共事件订阅概述](application-models/common-event-subscription-overview.md)
- [动态订阅公共事件](application-models/common-event-subscription.md)
- [静态订阅公共事件(仅对系统应用开放)](application-models/common-event-static-subscription.md)
- [取消动态订阅公共事件](application-models/common-event-unsubscription.md)
- [公共事件发布](application-models/common-event-publish.md)
- [公共事件取消订阅](application-models/common-event-unsubscription.md)
- [移除粘性公共事件](application-models/common-event-remove-sticky.md)
- [后台服务](application-models/background-services.md)
- 线程间通信
- [线程模型](application-models/thread-model-stage.md)
- 了解线程模型
- [线程模型概述](application-models/thread-model-stage.md)
- [使用Emitter进行线程间通信](application-models/itc-with-emitter.md)
- [使用Worker进行线程间通信](application-models/itc-with-worker.md)
- 任务管理
- [任务管理场景介绍](application-models/mission-management-overview.md)
- [任务管理与启动模式](application-models/mission-management-launch-type.md)
- 任务(Mission)管理
- [任务(Mission)管理场景介绍](application-models/mission-management-overview.md)
- [任务(Mission)与启动模式](application-models/mission-management-launch-type.md)
- [页面栈及任务链](application-models/page-mission-stack.md)
- [设置任务快照的图标和名称](application-models/mission-set-icon-name-for-task-snapshot.md)
- [Stage模型应用配置文件](application-models/config-file-stage.md)
- FA模型开发指导
- [FA模型开发概述](application-models/fa-model-development-overview.md)
- FA模型应用组件
......@@ -154,14 +198,16 @@
- [服务卡片开发指导](application-models/widget-development-fa.md)
- [FA模型的Context](application-models/application-context-fa.md)
- [信息传递载体Want](application-models/want-fa.md)
- 进程间通信
- [进程模型](application-models/process-model-fa.md)
- [组件启动规则(FA模型)](application-models/component-startup-rules-fa.md)
- 了解进程模型
- [进程模型概述](application-models/process-model-fa.md)
- [公共事件](application-models/common-event-fa.md)
- [后台服务](application-models/rpc.md)
- 线程间通信
- [线程模型](application-models/thread-model-fa.md)
- 了解线程模型
- [线程模型概述](application-models/thread-model-fa.md)
- [线程间通信](application-models/itc-fa-overview.md)
- [任务管理](application-models/mission-management-fa.md)
- [FA模型应用配置文件](application-models/config-file-fa.md)
- FA模型与Stage模型应用组件互通指导
- [FA模型与Stage模型应用组件互通综述](application-models/fa-stage-interaction-overview.md)
- [FA模型启动Stage模型UIAbility](application-models/start-uiability-from-fa.md)
......@@ -196,8 +242,8 @@
- [window接口切换](application-models/window-switch.md)
- [Storage接口切换](application-models/storage-switch.md)
- UI开发
- [方舟开发框架(ArkUI)概述](ui/arkui-overview.md)
- 基于ArkTS的声明式开发范式
- [方舟开发框架概述](ui/arkui-overview.md)
- UI开发(ArkTS声明式开发范式)
- [UI开发(ArkTS声明式开发范式)概述](ui/arkts-ui-development-overview.md)
- 开发布局
- [布局概述](ui/arkts-layout-development-overview.md)
......@@ -255,8 +301,8 @@
- [单一手势](ui/arkts-gesture-events-single-gesture.md)
- [组合手势](ui/arkts-gesture-events-combined-gestures.md)
- [性能提升的推荐方法](ui/arkts-performance-improvement-recommendation.md)
- 兼容JS的类Web开发范式
- [概述](ui/ui-js-overview.md)
- UI开发(兼容JS的类Web开发范式)
- [UI开发(兼容JS的类Web开发范式)概述](ui/ui-js-overview.md)
- 框架说明
- [文件组织](ui/js-framework-file.md)
- [js标签配置](ui/js-framework-js-tag.md)
......@@ -347,6 +393,7 @@
- [通知概述](notification/notification-overview.md)
- [订阅通知(仅对系统应用开放)](notification/notification-subscription.md)
- [使能通知开关](notification/notification-enable.md)
- [通知角标](notification/notification-badge.md)
- 发布通知
- [发布基础类型通知](notification/text-notification.md)
- [发布进度条类型通知](notification/progress-bar-notification.md)
......@@ -360,30 +407,64 @@
- [WebGL开发概述](webgl/webgl-overview.md)
- [WebGL开发指导](webgl/webgl-guidelines.md)
- 媒体
- [媒体应用开发概述](media/media-application-overview.md)
- 音视频
- [音频开发概述](media/audio-overview.md)
- [音频渲染开发指导](media/audio-renderer.md)
- [音频流管理开发指导](media/audio-stream-manager.md)
- [音频采集开发指导](media/audio-capturer.md)
- [OpenSL ES播放开发指导](media/opensles-playback.md)
- [OpenSL ES录音开发指导](media/opensles-capture.md)
- [音频焦点模式开发指导](media/audio-interruptmode.md)
- [音量管理开发指导](media/audio-volume-manager.md)
- [路由、设备管理开发指导](media/audio-routing-manager.md)
- [音视频播放器开发指导(推荐使用)](media/avplayer-playback.md)
- [音视频录制开发指导(推荐使用)](media/avrecorder.md)
- [音频播放开发指导(待停用)](media/audio-playback.md)
- [音频录制开发指导(待停用)](media/audio-recorder.md)
- [视频播放开发指导(待停用)](media/video-playback.md)
- [视频录制开发指导(待停用)](media/video-recorder.md)
- 媒体会话
- [AVSession开发概述](media/avsession-overview.md)
- [AVSession开发指导](media/avsession-guidelines.md)
- [音视频概述](media/av-overview.md)
- [AVPlayer和AVRecorder](media/avplayer-avrecorder-overview.md)
- 音频播放
- [音频播放开发概述](media/audio-playback-overview.md)
- [使用AVPlayer开发音频播放功能](media/using-avplayer-for-playback.md)
- [使用AudioRenderer开发音频播放功能](media/using-audiorenderer-for-playback.md)
- [使用OpenSL ES开发音频播放功能](media/using-opensl-es-for-playback.md)
- [使用TonePlayer开发音频播放功能(仅对系统应用开放)](media/using-toneplayer-for-playback.md)
- [多音频播放的并发策略](media/audio-playback-concurrency.md)
- [播放音量管理](media/volume-management.md)
- [音频播放流管理](media/audio-playback-stream-management.md)
- [音频输出设备管理](media/audio-output-device-management.md)
- [分布式音频播放(仅对系统应用开放)](media/distributed-audio-playback.md)
- 音频录制
- [音频录制开发概述](media/audio-recording-overview.md)
- [使用AVRecorder开发音频录制功能](media/using-avrecorder-for-recording.md)
- [使用AudioCapturer开发音频录制功能](media/using-audiocapturer-for-recording.md)
- [使用OpenSLES开发音频录制功能](media/using-opensl-es-for-recording.md)
- [管理麦克风](media/mic-management.md)
- [音频录制流管理](media/audio-recording-stream-management.md)
- [音频输入设备管理](media/audio-input-device-management.md)
- 音频通话
- [音频通话开发概述](media/audio-call-overview.md)
- [开发音频通话功能](media/audio-call-development.md)
- [视频播放](media/video-playback.md)
- [视频录制](media/video-recording.md)
- 媒体会话(仅对系统应用开放)
- [媒体会话概述](media/avsession-overview.md)
- 本地媒体会话
- [本地媒体会话概述](media/local-avsession-overview.md)
- [媒体会话提供方](media/using-avsession-developer.md)
- [媒体会话控制方](media/using-avsession-controller.md)
- 分布式媒体会话
- [分布式媒体会话概述](media/distributed-avsession-overview.md)
- [使用分布式媒体会话](media/using-distributed-avsession.md)
- 相机(仅对系统应用开放)
- [相机开发概述](media/camera-overview.md)
- 相机开发指导
- [开发准备](media/camera-preparation.md)
- [设备输入](media/camera-device-input.md)
- [会话管理](media/camera-session-management.md)
- [预览](media/camera-preview.md)
- [拍照](media/camera-shooting.md)
- [录像](media/camera-recording.md)
- [元数据](media/camera-metadata.md)
- 相机最佳实践
- [拍照实现方案](media/camera-shooting-case.md)
- [录像实现方案](media/camera-recording-case.md)
- 图片
- [图片开发指导](media/image.md)
- 相机
- [相机开发指导](media/camera.md)
- [分布式相机开发指导](media/remote-camera.md)
- [图片开发概述](media/image-overview.md)
- [图片解码](media/image-decoding.md)
- 图片处理
- [图像变换](media/image-transformation.md)
- [位图操作](media/image-pixelmap-operation.md)
- [图片编码](media/image-encoding.md)
- [图片工具](media/image-tool.md)
- 安全
- 访问控制
- [访问控制(权限)开发概述](security/accesstoken-overview.md)
......@@ -393,9 +474,10 @@
- 用户认证
- [用户认证开发概述](security/userauth-overview.md)
- [用户认证开发指导](security/userauth-guidelines.md)
- 密钥管理
- [HUKS开发概述](security/huks-overview.md)
- [HUKS开发指导](security/huks-guidelines.md)
- 通用密钥库
- [通用密钥库开发概述](security/huks-overview.md)
- [通用密钥库开发指导](security/huks-guidelines.md)
- [通用密钥库密码算法规格](security/huks-appendix.md)
- 加解密算法库框架
- [加解密算法库框架概述](security/cryptoFramework-overview.md)
- [加解密算法框架开发指导](security/cryptoFramework-guidelines.md)
......@@ -412,10 +494,10 @@
- [HTTP数据请求](connectivity/http-request.md)
- [WebSocket连接](connectivity/websocket-connection.md)
- [Socket连接](connectivity/socket-connection.md)
- [策略管理](connectivity/net-policy-management.md)
- [网络共享](connectivity/net-sharing.md)
- [以太网连接](connectivity/net-ethernet.md)
- [网络连接管理](connectivity/net-connection-manager.md)
- [MDNS管理](connectivity/net-mdns.md)
- IPC与RPC通信
- [IPC与RPC通信概述](connectivity/ipc-rpc-overview.md)
- [IPC与RPC通信开发指导](connectivity/ipc-rpc-development-guideline.md)
......@@ -425,31 +507,53 @@
- [拨打电话](telephony/telephony-call.md)
- [短信服务](telephony/telephony-sms.md)
- 数据管理
- 分布式数据服务
- [分布式数据服务概述](database/database-mdds-overview.md)
- [分布式数据服务开发指导](database/database-mdds-guidelines.md)
- 关系型数据库
- [关系型数据库概述](database/database-relational-overview.md)
- [关系型数据库开发指导](database/database-relational-guidelines.md)
- 首选项
- [首选项概述](database/database-preference-overview.md)
- [首选项开发指导](database/database-preference-guidelines.md)
- 分布式数据对象
- [分布式数据对象概述](database/database-distributedobject-overview.md)
- [分布式数据对象开发指导](database/database-distributedobject-guidelines.md)
- 数据共享
- [数据共享概述](database/database-datashare-overview.md)
- [数据共享开发指导](database/database-datashare-guidelines.md)
- [数据管理概述](database/data-mgmt-overview.md)
- 应用数据持久化
- [应用数据持久化概述](database/app-data-persistence-overview.md)
- [通过用户首选项实现数据持久化](database/data-persistence-by-preferences.md)
- [通过键值型数据库实现数据持久化](database/data-persistence-by-kv-store.md)
- [通过关系型数据库实现数据持久化](database/data-persistence-by-rdb-store.md)
- 同应用跨设备数据同步(分布式)
- [同应用跨设备数据同步概述](database/sync-app-data-across-devices-overview.md)
- [键值型数据库跨设备数据同步](database/data-sync-of-kv-store.md)
- [关系型数据库跨设备数据同步](database/data-sync-of-rdb-store.md)
- [分布式数据对象跨设备数据同步](database/data-sync-of-distributed-data-object.md)
- 数据可靠性与安全性
- [数据可靠性与安全性概述](database/data-reliability-security-overview.md)
- [数据库备份与恢复](database/data-backup-and-restore.md)
- [数据库加密](database/data-encryption.md)
- [基于设备分类和数据分级的访问控制](database/access-control-by-device-and-data-level.md)
- 同设备跨应用数据共享(仅对系统应用开放)
- [同设备跨应用数据共享概述](database/share-device-data-across-apps-overview.md)
- [通过DataShareExtensionAbility实现数据共享](database/share-data-by-datashareextensionability.md)
- [通过静默数据访问实现数据共享](database/share-data-by-silent-access.md)
- 文件管理
- 媒体库管理
- [媒体库开发概述](file-management/medialibrary-overview.md)
- [媒体资源使用指导](file-management/medialibrary-resource-guidelines.md)
- [文件路径使用指导](file-management/medialibrary-filepath-guidelines.md)
- [相册资源使用指导](file-management/medialibrary-album-guidelines.md)
- 文件访问框架
- [用户公共文件访问框架概述](file-management/file-access-framework-overview.md)
- [文件选择器使用指导](file-management/filepicker-guidelines.md)
- 后台任务(Background Task)管理
- [文件管理概述](file-management/file-management-overview.md)
- 应用文件
- [应用文件概述](file-management/app-file-overview.md)
- [应用沙箱目录](file-management/app-sandbox-directory.md)
- 应用文件访问与管理
- [应用文件访问](file-management/app-file-access.md)
- [应用文件上传下载](file-management/app-file-upload-download.md)
- [应用及文件系统空间统计](file-management/app-fs-space-statistics.md)
- [向应用沙箱推送文件](file-management/send-file-to-app-sandbox.md)
- [应用文件分享](file-management/share-app-file.md)
- 应用数据备份恢复
- [应用数据备份恢复概述](file-management/app-file-backup-overview.md)
- [应用接入数据备份恢复](file-management/app-file-backup-extension.md)
- [应用触发数据备份/恢复(仅对系统应用开放)](file-management/app-file-backup.md)
- 用户文件
- [用户文件概述](file-management/user-file-overview.md)
- 选择与保存用户文件(FilePicker)
- [选择用户文件](file-management/select-user-file.md)
- [保存用户文件](file-management/save-user-file.md)
- [开发用户文件管理器(仅对系统应用开放)](file-management/dev-user-file-manager.md)
- [管理外置存储设备(仅对系统应用开放)](file-management/manage-external-storage.md)
- 分布式文件系统
- [分布式文件系统概述](file-management/distributed-fs-overview.md)
- [设置分布式文件数据等级](file-management/set-security-label.md)
- [跨设备文件访问](file-management/file-access-across-devices.md)
- 任务管理
- 后台任务
- [后台任务概述](task-management/background-task-overview.md)
- [短时任务开发指导](task-management/transient-task-dev-guide.md)
......@@ -464,8 +568,8 @@
- USB服务
- [USB服务开发概述](device/usb-overview.md)
- [USB服务开发指导](device/usb-guidelines.md)
- 位置服务
- [位置开发指南](device/location-guidelines.md)
- 位置
- [位置服务开发指南](device/location-guidelines.md)
- 传感器
- [传感器开发概述](device/sensor-overview.md)
- [传感器开发指导](device/sensor-guidelines.md)
......@@ -487,9 +591,13 @@
- [应用事件打点开发指导](dfx/hiappevent-guidelines.md)
- [性能打点跟踪开发指导](dfx/hitracemeter-guidelines.md)
- [分布式跟踪开发指导](dfx/hitracechain-guidelines.md)
- [HiLog开发指导(Native)](dfx/hilog-guidelines.md)
- 错误管理
- [错误管理开发指导](dfx/errormanager-guidelines.md)
- [应用恢复开发指导](dfx/apprecovery-guidelines.md)
- 日志分析
- [应用无响应(appfreeze)日志分析指导](dfx/appfreeze-guidelines.md)
- [进程崩溃(cppcrash)日志分析指导](dfx/cppcrash-guidelines.md)
- 国际化
- [国际化开发概述](internationalization/international-overview.md)
- [Intl开发指导](internationalization/intl-guidelines.md)
......@@ -544,9 +652,10 @@
- [资源使用](key-features/multi-device-app-dev/resource-usage.md)
- [功能开发的一多能力介绍](key-features/multi-device-app-dev/development-intro.md)
- [案例应用](key-features/multi-device-app-dev/case.md)
- [常见问题](key-features/multi-device-app-dev/faq.md)
- [常见问题](key-features/multi-device-app-dev/faq.md)
- [IDL工具规格及使用说明书](IDL/idl-guidelines.md)
- Native API相关指导
- [Native API介绍](napi/introduction.md)
- [Native API在应用工程中的使用指导](napi/napi-guidelines.md)
- [Drawing开发指导](napi/drawing-guidelines.md)
- [Rawfile开发指导](napi/rawfile-guidelines.md)
......@@ -561,9 +670,12 @@
- 打包拆包工具
- [打包工具](tools/packing-tool.md)
- [拆包工具](tools/unpacking-tool.md)
- [anm工具](tools/anm-tool.md)
- [cem工具](tools/cem-tool.md)
- [anm工具](tools/anm-tool.md)
- [restool工具](tools/restool.md)
- [LLDB调试器使用指导](tools/lldb-tool.md)
- 示例教程
- [开发案例](https://gitee.com/openharmony/docs/blob/master/zh-cn/third-party-cases/Readme-CN.md)
- [示例代码](https://gitee.com/openharmony/applications_app_samples/blob/master/README_zh.md)
- [Codelabs](https://gitee.com/openharmony/codelabs/blob/master/README.md)
- API参考
......@@ -582,6 +694,7 @@
- [鼠标事件](reference/arkui-ts/ts-universal-mouse-key.md)
- [组件区域变化事件](reference/arkui-ts/ts-universal-component-area-change-event.md)
- [组件可见区域变化事件](reference/arkui-ts/ts-universal-component-visible-area-change-event.md)
- [组件快捷键事件](reference/arkui-ts/ts-universal-events-keyboardshortcut.md)
- 通用属性
- [尺寸设置](reference/arkui-ts/ts-universal-attributes-size.md)
- [位置设置](reference/arkui-ts/ts-universal-attributes-location.md)
......@@ -598,7 +711,6 @@
- [图形变换](reference/arkui-ts/ts-universal-attributes-transformation.md)
- [图像效果](reference/arkui-ts/ts-universal-attributes-image-effect.md)
- [形状裁剪](reference/arkui-ts/ts-universal-attributes-sharp-clipping.md)
- [文本样式设置](reference/arkui-ts/ts-universal-attributes-text-style.md)
- [栅格设置](reference/arkui-ts/ts-universal-attributes-grid.md)
- [颜色渐变](reference/arkui-ts/ts-universal-attributes-gradient-color.md)
- [Popup控制](reference/arkui-ts/ts-universal-attributes-popup.md)
......@@ -612,6 +724,11 @@
- [触摸测试控制](reference/arkui-ts/ts-universal-attributes-hit-test-behavior.md)
- [背景模糊设置](reference/arkui-ts/ts-universal-attributes-backgroundBlurStyle.md)
- [分布式迁移标识](reference/arkui-ts/ts-universal-attributes-restoreId.md)
- [前景色设置](reference/arkui-ts/ts-universal-attributes-foreground-color.md)
- [图像球面效果设置](reference/arkui-ts/ts-universal-attributes-sphericalEffect.md)
- [图像渐亮效果设置](reference/arkui-ts/ts-universal-attributes-lightUpEffect.md)
- [图像像素扩展效果设置](reference/arkui-ts/ts-universal-attributes-pixelStretchEffect.md)
- [文本通用属性](reference/arkui-ts/ts-universal-attributes-text-style.md)
- 手势处理
- [绑定手势方法](reference/arkui-ts/ts-gesture-settings.md)
- 基础手势
......@@ -623,6 +740,7 @@
- [SwipeGesture](reference/arkui-ts/ts-basic-gestures-swipegesture.md)
- [组合手势](reference/arkui-ts/ts-combined-gestures.md)
- 基础组件
- [AlphabetIndexer](reference/arkui-ts/ts-container-alphabet-indexer.md)
- [Blank](reference/arkui-ts/ts-basic-components-blank.md)
- [Button](reference/arkui-ts/ts-basic-components-button.md)
- [Checkbox](reference/arkui-ts/ts-basic-components-checkbox.md)
......@@ -634,6 +752,7 @@
- [Gauge](reference/arkui-ts/ts-basic-components-gauge.md)
- [Image](reference/arkui-ts/ts-basic-components-image.md)
- [ImageAnimator](reference/arkui-ts/ts-basic-components-imageanimator.md)
- [ImageSpan](reference/arkui-ts/ts-basic-components-imagespan.md)
- [LoadingProgress](reference/arkui-ts/ts-basic-components-loadingprogress.md)
- [Marquee](reference/arkui-ts/ts-basic-components-marquee.md)
- [Menu](reference/arkui-ts/ts-basic-components-menu.md)
......@@ -669,7 +788,6 @@
- [XComponent](reference/arkui-ts/ts-basic-components-xcomponent.md)
- 容器组件
- [AbilityComponent](reference/arkui-ts/ts-container-ability-component.md)
- [AlphabetIndexer](reference/arkui-ts/ts-container-alphabet-indexer.md)
- [Badge](reference/arkui-ts/ts-container-badge.md)
- [Column](reference/arkui-ts/ts-container-column.md)
- [ColumnSplit](reference/arkui-ts/ts-container-columnsplit.md)
......@@ -733,13 +851,14 @@
- [时间选择弹窗](reference/arkui-ts/ts-methods-timepicker-dialog.md)
- [文本选择弹窗](reference/arkui-ts/ts-methods-textpicker-dialog.md)
- [菜单](reference/arkui-ts/ts-methods-menu.md)
- [自定义组件的生命周期](reference/arkui-ts/ts-custom-component-lifecycle.md)
- [应用级变量的状态管理](reference/arkui-ts/ts-state-management.md)
- [像素单位](reference/arkui-ts/ts-pixel-units.md)
- [枚举说明](reference/arkui-ts/ts-appendix-enums.md)
- [类型说明](reference/arkui-ts/ts-types.md)
- 已停止维护的组件
- [GridContainer](reference/arkui-ts/ts-container-gridcontainer.md)
- 组件参考(兼容JS的类Web开发范式-ArkUI.Full
- 组件参考(兼容JS的类Web开发范式)
- 组件通用信息
- [通用属性](reference/arkui-js/js-components-common-attributes.md)
- [通用样式](reference/arkui-js/js-components-common-styles.md)
......@@ -840,41 +959,41 @@
- [生命周期定义](reference/arkui-js/js-components-custom-lifecycle.md)
- [动态创建组件](reference/arkui-js/js-components-create-elements.md)
- [数据类型说明](reference/arkui-js/js-appendix-types.md)
- 组件参考(兼容JS的类Web开发范式-ArkUI.Lite)
- 组件参考(兼容JS的类Web开发范式-ArkUI.Lite)
- 框架说明
- [文件组织](js-framework-file.md)
- [js标签配置](js-framework-js-tag.md)
- [app.js](js-framework-js-file.md)
- [文件组织](reference/arkui-js-lite/js-framework-file.md)
- [js标签配置](reference/arkui-js-lite/js-framework-js-tag.md)
- [app.js](reference/arkui-js-lite/js-framework-js-file.md)
- 语法
- [HML语法参考](js-framework-syntax-hml.md)
- [CSS语法参考](js-framework-syntax-css.md)
- [JS语法参考](js-framework-syntax-js.md)
- [HML语法参考](reference/arkui-js-lite/js-framework-syntax-hml.md)
- [CSS语法参考](reference/arkui-js-lite/js-framework-syntax-css.md)
- [JS语法参考](reference/arkui-js-lite/js-framework-syntax-js.md)
- 组件通用信息
- [通用事件](js-common-events.md)
- [通用属性](js-common-attributes.md)
- [通用样式](js-common-styles.md)
- [动画样式](js-components-common-animation.md)
- [通用事件](reference/arkui-js-lite/js-common-events.md)
- [通用属性](reference/arkui-js-lite/js-common-attributes.md)
- [通用样式](reference/arkui-js-lite/js-common-styles.md)
- [动画样式](reference/arkui-js-lite/js-components-common-animation.md)
- 容器组件
- [div](js-components-container-div.md)
- [list](js-components-container-list.md)
- [list-item](js-components-container-list-item.md)
- [stack](js-components-container-stack.md)
- [swiper](js-components-container-swiper.md)
- [div](reference/arkui-js-lite/js-components-container-div.md)
- [list](reference/arkui-js-lite/js-components-container-list.md)
- [list-item](reference/arkui-js-lite/js-components-container-list-item.md)
- [stack](reference/arkui-js-lite/js-components-container-stack.md)
- [swiper](reference/arkui-js-lite/js-components-container-swiper.md)
- 基础组件
- [chart](js-components-basic-chart.md)
- [image](js-components-basic-image.md)
- [image-animator](js-components-basic-image-animator.md)
- [input](js-components-basic-input.md)
- [marquee](js-components-basic-marquee.md)
- [picker-view](js-components-basic-picker-view.md)
- [progress](js-components-basic-progress.md)
- [qrcode](js-components-basic-qrcode.md)
- [slider](js-components-basic-slider.md)
- [switch](js-components-basic-switch.md)
- [text](js-components-basic-text.md)
- [chart](reference/arkui-js-lite/js-components-basic-chart.md)
- [image](reference/arkui-js-lite/js-components-basic-image.md)
- [image-animator](reference/arkui-js-lite/js-components-basic-image-animator.md)
- [input](reference/arkui-js-lite/js-components-basic-input.md)
- [marquee](reference/arkui-js-lite/js-components-basic-marquee.md)
- [picker-view](reference/arkui-js-lite/js-components-basic-picker-view.md)
- [progress](reference/arkui-js-lite/js-components-basic-progress.md)
- [qrcode](reference/arkui-js-lite/js-components-basic-qrcode.md)
- [slider](reference/arkui-js-lite/js-components-basic-slider.md)
- [switch](reference/arkui-js-lite/js-components-basic-switch.md)
- [text](reference/arkui-js-lite/js-components-basic-text.md)
- 画布组件
- [canvas组件](js-components-canvas-canvas.md)
- [CanvasRenderingContext2D对象](js-components-canvas-canvasrenderingcontext2d.md)
- [canvas组件](reference/arkui-js-lite/js-components-canvas-canvas.md)
- [CanvasRenderingContext2D对象](reference/arkui-js-lite/js-components-canvas-canvasrenderingcontext2d.md)
- JS服务卡片UI组件参考
- JS服务卡片UI框架说明
- [文件组织](reference/js-service-widget-ui/js-service-widget-file.md)
......@@ -932,8 +1051,6 @@
- [@ohos.app.form.FormExtensionAbility (FormExtensionAbility)](reference/apis/js-apis-app-form-formExtensionAbility.md)
- [@ohos.application.DataShareExtensionAbility (数据共享扩展能力)](reference/apis/js-apis-application-dataShareExtensionAbility.md)
- [@ohos.application.StaticSubscriberExtensionAbility (StaticSubscriberExtensionAbility)](reference/apis/js-apis-application-staticSubscriberExtensionAbility.md)
- Stage模型能力的接口(待停用)
- [@ohos.application.EnvironmentCallback (EnvironmentCallback)](reference/apis/js-apis-application-environmentCallback.md)
- FA模型能力的接口
- [@ohos.ability.ability (Ability)](reference/apis/js-apis-ability-ability.md)
- [@ohos.ability.featureAbility (FeatureAbility模块)](reference/apis/js-apis-ability-featureAbility.md)
......@@ -945,16 +1062,20 @@
- [@ohos.app.ability.appRecovery (appRecovery)](reference/apis/js-apis-app-ability-appRecovery.md)
- [@ohos.app.ability.Configuration (Configuration)](reference/apis/js-apis-app-ability-configuration.md)
- [@ohos.app.ability.ConfigurationConstant (ConfigurationConstant)](reference/apis/js-apis-app-ability-configurationConstant.md)
- [@ohos.app.ability.dataUriUtils (DataUriUtils模块)](reference/apis/js-apis-app-ability-dataUriUtils.md)
- [@ohos.app.ability.dialogRequest (dialogRequest模块)](reference/apis/js-apis-app-ability-dialogRequest.md)
- [@ohos.app.ability.errorManager (ErrorManager)](reference/apis/js-apis-app-ability-errorManager.md)
- [@ohos.app.ability.missionManager (missionManager)](reference/apis/js-apis-app-ability-missionManager.md)
- [@ohos.app.ability.quickFixManager (quickFixManager)](reference/apis/js-apis-app-ability-quickFixManager.md)
- [@ohos.app.ability.Want (Want)](reference/apis/js-apis-app-ability-want.md)
- [@ohos.app.ability.wantAgent (WantAgent模块)](reference/apis/js-apis-app-ability-wantAgent.md)
- [@ohos.app.ability.wantConstant (wantConstant)](reference/apis/js-apis-app-ability-wantConstant.md)
- [@ohos.app.businessAbilityRouter (业务路由模块)](reference/apis/js-apis-businessAbilityRouter.md)
- [@ohos.app.form.formBindingData (卡片数据绑定类)](reference/apis/js-apis-app-form-formBindingData.md)
- [@ohos.app.form.formHost (FormHost)](reference/apis/js-apis-app-form-formHost.md)
- [@ohos.app.form.formInfo (FormInfo)](reference/apis/js-apis-app-form-formInfo.md)
- [@ohos.app.form.formProvider (FormProvider)](reference/apis/js-apis-app-form-formProvider.md)
- [@ohos.application.uriPermissionManager(URI权限管理)](reference/apis/js-apis-uripermissionmanager.md)
- 通用能力的接口(待停用)
- [@ohos.ability.dataUriUtils (DataUriUtils模块)](reference/apis/js-apis-ability-dataUriUtils.md)
- [@ohos.ability.errorCode (ErrorCode)](reference/apis/js-apis-ability-errorCode.md)
......@@ -1026,10 +1147,13 @@
- [continuationExtraParams](reference/apis/js-apis-continuation-continuationExtraParams.md)
- [continuationResult](reference/apis/js-apis-continuation-continuationResult.md)
- 公共事件与通知
- [系统公共事件定义](reference/apis/commonEventManager-definitions.md)
- [@ohos.commonEventManager (公共事件模块)(推荐)](reference/apis/js-apis-commonEventManager.md)
- [@ohos.events.emitter (Emitter)](reference/apis/js-apis-emitter.md)
- [@ohos.notificationManager (NotificationManager模块)(推荐)](reference/apis/js-apis-notificationManager.md)
- [@ohos.notificationSubscribe (NotificationSubscribe模块)(推荐)](reference/apis/js-apis-notificationSubscribe.md)
- [@ohos.application.StaticSubscriberExtensionContext (NotificationSubscribe模块)(推荐)](reference/apis/js-apis-application-StaticSubscriberExtensionContext.md)
- [系统公共事件定义 (待停用)](reference/apis/commonEvent-definitions.md)
- [@ohos.commonEvent (公共事件模块)(待停用)](reference/apis/js-apis-commonEvent.md)
- [@ohos.notification (Notification模块)(待停用)](reference/apis/js-apis-notification.md)
- application
......@@ -1048,6 +1172,12 @@
- [NotificationSlot](reference/apis/js-apis-inner-notification-notificationSlot.md)
- [NotificationTemplate](reference/apis/js-apis-inner-notification-notificationTemplate.md)
- [NotificationUserInput](reference/apis/js-apis-inner-notification-notificationUserInput.md)
- 公共事件定义
- [元能力子系统公共事件定义](reference/apis/common_event/commonEvent-ability.md)
- [包管理子系统公共事件定义](reference/apis/common_event/commonEvent-bundleManager.md)
- [通知服务公共事件定义](reference/apis/common_event/commonEvent-ans.md)
- [资源调度子系统公共事件定义](reference/apis/common_event/commonEvent-resourceschedule.md)
- [电话服务子系统公共事件定义](reference/apis/common_event/commonEvent-telephony.md)
- 包管理
- [@ohos.bundle.appControl (appControl模块)](reference/apis/js-apis-appControl.md)
- [@ohos.bundle.bundleManager (bundleManager模块)](reference/apis/js-apis-bundleManager.md)
......@@ -1057,29 +1187,38 @@
- [@ohos.bundle.freeInstall (freeInstall模块)](reference/apis/js-apis-freeInstall.md)
- [@ohos.bundle.installer (installer模块)](reference/apis/js-apis-installer.md)
- [@ohos.bundle.launcherBundleManager (launcherBundleManager模块)](reference/apis/js-apis-launcherBundleManager.md)
- [@ohos.bundle.overlay (overlay模块)](reference/apis/js-apis-overlay.md)
- [@ohos.zlib (Zip模块)](reference/apis/js-apis-zlib.md)
- bundleManager
- [abilityInfo](reference/apis/js-apis-bundleManager-abilityInfo.md)
- [applicationInfo](reference/apis/js-apis-bundleManager-applicationInfo.md)
- [AppProvisionInfo](reference/apis/js-apis-bundleManager-AppProvisionInfo.md)
- [bundleInfo](reference/apis/js-apis-bundleManager-bundleInfo.md)
- [BundlePackInfo](reference/apis/js-apis-bundleManager-BundlePackInfo.md)
- [BusinessAbilityInfo](reference/apis/js-apis-bundleManager-businessAbilityInfo.md)
- [dispatchInfo](reference/apis/js-apis-bundleManager-dispatchInfo.md)
- [elementName](reference/apis/js-apis-bundleManager-elementName.md)
- [extensionAbilityInfo](reference/apis/js-apis-bundleManager-extensionAbilityInfo.md)
- [hapModuleInfo](reference/apis/js-apis-bundleManager-hapModuleInfo.md)
- [launcherAbilityInfo](reference/apis/js-apis-bundleManager-launcherAbilityInfo.md)
- [metadata](reference/apis/js-apis-bundleManager-metadata.md)
- [OverlayModuleInfo](reference/apis/js-apis-bundleManager-overlayModuleInfo.md)
- [permissionDef](reference/apis/js-apis-bundleManager-permissionDef.md)
- [remoteAbilityInfo](reference/apis/js-apis-bundleManager-remoteAbilityInfo.md)
- [SharedBundleInfo](reference/apis/js-apis-bundleManager-sharedBundleInfo.md)
- [shortcutInfo](reference/apis/js-apis-bundleManager-shortcutInfo.md)
- UI界面
- [@ohos.animator (动画)](reference/apis/js-apis-animator.md)
- [@ohos.arkui.componentSnapshot(组件截图)](reference/apis/js-apis-arkui-componentSnapshot.md)
- [@ohos.arkui.drawableDescriptor(DrawableDescriptor)](reference/apis/js-apis-arkui-drawableDescriptor.md)
- [@ohos.curves (插值计算)](reference/apis/js-apis-curve.md)
- [@ohos.matrix4 (矩阵变换)](reference/apis/js-apis-matrix4.md)
- [@ohos.mediaquery (媒体查询)](reference/apis/js-apis-mediaquery.md)
- [@ohos.pluginComponent(PluginComponentManager)](reference/apis/js-apis-plugincomponent.md)
- [@ohos.promptAction (弹窗)](reference/apis/js-apis-promptAction.md)
- [@ohos.router (页面路由)](reference/apis/js-apis-router.md)
- [@ohos.measure (文本计算)](reference/apis/js-apis-measure.md)
- [@ohos.uiAppearance(用户界面外观)](reference/apis/js-apis-uiappearance.md)
- 图形图像
- [@ohos.animation.windowAnimationManager (窗口动画管理)](reference/apis/js-apis-windowAnimationManager.md)
- [@ohos.application.WindowExtensionAbility (窗口扩展能力)](reference/apis/js-apis-application-windowExtensionAbility.md)
......@@ -1109,6 +1248,8 @@
- [@ohos.resourceschedule.workScheduler (延迟任务调度)](reference/apis/js-apis-resourceschedule-workScheduler.md)
- [@ohos.resourceschedule.usageStatistics (设备使用信息统计)](reference/apis/js-apis-resourceschedule-deviceUsageStatistics.md)
- [@ohos.WorkSchedulerExtensionAbility (延迟任务调度回调)](reference/apis/js-apis-WorkSchedulerExtensionAbility.md)
- application
- [WorkSchedulerExtensionContext](reference/apis/js-apis-inner-application-WorkSchedulerExtensionContext.md)
- 安全
- [@ohos.abilityAccessCtrl (程序访问控制管理)](reference/apis/js-apis-abilityAccessCtrl.md)
- [@ohos.privacyManager (隐私管理)](reference/apis/js-apis-privacyManager.md)
......@@ -1117,7 +1258,6 @@
- [@ohos.security.huks (通用密钥库系统)](reference/apis/js-apis-huks.md)
- [@ohos.userIAM.faceAuth (人脸认证)](reference/apis/js-apis-useriam-faceauth.md)
- [@ohos.userIAM.userAuth (用户认证)](reference/apis/js-apis-useriam-userauth.md)
- [@system.cipher (加密算法)](reference/apis/js-apis-system-cipher.md)
- security
- [PermissionRequestResult](reference/apis/js-apis-permissionrequestresult.md)
- 数据管理
......@@ -1127,23 +1267,25 @@
- [@ohos.data.dataShareResultSet (数据共享结果集)](reference/apis/js-apis-data-DataShareResultSet.md)
- [@ohos.data.distributedDataObject (分布式数据对象)](reference/apis/js-apis-data-distributedobject.md)
- [@ohos.data.distributedKVStore (分布式键值数据库)](reference/apis/js-apis-distributedKVStore.md)
- [@ohos.data.preferences (首选项)](reference/apis/js-apis-data-preferences.md)
- [@ohos.data.preferences (用户首选项)](reference/apis/js-apis-data-preferences.md)
- [@ohos.data.relationalStore (关系型数据库)](reference/apis/js-apis-data-relationalStore.md)
- [@ohos.data.ValuesBucket (数据集)](reference/apis/js-apis-data-valuesBucket.md)
- data/rdb
- [resultSet (结果集)](reference/apis/js-apis-data-resultset.md)
- 文件管理
- [@ohos.file.backup (备份恢复)](reference/apis/js-apis-file-backup.md)
- [@ohos.file.cloudSyncManager (端云同步管理)](reference/apis/js-apis-file-cloudsyncmanager.md)
- [@ohos.file.environment (目录环境能力)](reference/apis/js-apis-file-environment.md)
- [@ohos.file.fileAccess (公共文件访问与管理)](reference/apis/js-apis-fileAccess.md)
- [@ohos.file.fileExtensionInfo (公共文件访问与管理属性信息)](reference/apis/js-apis-fileExtensionInfo.md)
- [@ohos.file.fileuri (文件URI)](reference/apis/js-apis-file-fileuri.md)
- [@ohos.file.fs (文件管理)](reference/apis/js-apis-file-fs.md)
- [@ohos.file.hash (文件哈希处理)](reference/apis/js-apis-file-hash.md)
- [@ohos.file.picker (选择器)](reference/apis/js-apis-file-picker.md)
- [@ohos.file.securityLabel (数据标签)](reference/apis/js-apis-file-securityLabel.md)
- [@ohos.file.statvfs (文件系统空间统计)](reference/apis/js-apis-file-statvfs.md)
- [@ohos.file.storageStatistics (应用空间统计)](reference/apis/js-apis-file-storage-statistics.md)
- [@ohos.file.volumeManager (卷管理)](reference/apis/js-apis-file-volumemanager.md)
- [@ohos.filemanagement.userFileManager (用户数据管理)](reference/apis/js-apis-userFileManager.md)
- [@ohos.multimedia.medialibrary (媒体库管理)](reference/apis/js-apis-medialibrary.md)
- [@ohos.fileShare (文件分享)](reference/apis/js-apis-fileShare.md)
- 电话服务
- [@ohos.contact (联系人)](reference/apis/js-apis-contact.md)
- [@ohos.telephony.call (拨打电话)](reference/apis/js-apis-call.md)
......@@ -1156,12 +1298,14 @@
- [@ohos.net.connection (网络连接管理)](reference/apis/js-apis-net-connection.md)
- [@ohos.net.ethernet (以太网连接管理)](reference/apis/js-apis-net-ethernet.md)
- [@ohos.net.http (数据请求)](reference/apis/js-apis-http.md)
- [@ohos.net.mdns (MDNS管理)](reference/apis/js-apis-net-mdns.md)
- [@ohos.net.sharing (网络共享管理)](reference/apis/js-apis-net-sharing.md)
- [@ohos.net.socket (Socket连接)](reference/apis/js-apis-socket.md)
- [@ohos.net.webSocket (WebSocket连接)](reference/apis/js-apis-webSocket.md)
- [@ohos.request (上传下载)](reference/apis/js-apis-request.md)
- 通信与连接
- [@ohos.bluetooth (蓝牙)](reference/apis/js-apis-bluetooth.md)
- [@ohos.bluetooth (蓝牙)(待停用)](reference/apis/js-apis-bluetooth.md)
- [@ohos.bluetoothManager (蓝牙)(推荐)](reference/apis/js-apis-bluetoothManager.md)
- [@ohos.connectedTag (有源标签)](reference/apis/js-apis-connectedTag.md)
- [@ohos.nfc.cardEmulation (标准NFC-cardEmulation)](reference/apis/js-apis-cardEmulation.md)
- [@ohos.nfc.controller (标准NFC)](reference/apis/js-apis-nfcController.md)
......@@ -1199,7 +1343,7 @@
- [@ohos.systemTimer (系统定时器)](reference/apis/js-apis-system-timer.md)
- [@ohos.wallpaper (壁纸)](reference/apis/js-apis-wallpaper.md)
- [@ohos.web.webview (Webview)](reference/apis/js-apis-webview.md)
- [console (日志打印)](reference/apis/js-apis-logs.md)
- [console (控制台)](reference/apis/js-apis-logs.md)
- [Timer (定时器)](reference/apis/js-apis-timer.md)
- application
- [AccessibilityExtensionContext (辅助功能扩展上下文)](reference/apis/js-apis-inner-application-accessibilityExtensionContext.md)
......@@ -1207,12 +1351,14 @@
- [@ohos.batteryInfo (电量信息)](reference/apis/js-apis-battery-info.md)
- [@ohos.batteryStatistics (耗电统计)](reference/apis/js-apis-batteryStatistics.md)
- [@ohos.brightness (屏幕亮度)](reference/apis/js-apis-brightness.md)
- [@ohos.charger (充电类型)](reference/apis/js-apis-charger.md)
- [@ohos.cooperate (键鼠穿越)](reference/apis/js-apis-devicestatus-cooperate.md)
- [@ohos.deviceInfo (设备信息)](reference/apis/js-apis-device-info.md)
- [@ohos.distributedHardware.deviceManager (设备管理)](reference/apis/js-apis-device-manager.md)
- [@ohos.geoLocationManager (位置服务)](reference/apis/js-apis-geoLocationManager.md)
- [@ohos.multimodalInput.inputConsumer (组合按键)](reference/apis/js-apis-inputconsumer.md)
- [@ohos.multimodalInput.inputDevice (输入设备)](reference/apis/js-apis-inputdevice.md)
- [@ohos.multimodalInput.inputDeviceCooperate (键鼠穿越)](reference/apis/js-apis-cooperate.md)
- [@ohos.multimodalInput.inputDeviceCooperate (键鼠穿越)(待停用)](reference/apis/js-apis-cooperate.md)
- [@ohos.multimodalInput.inputEvent (输入事件)](reference/apis/js-apis-inputevent.md)
- [@ohos.multimodalInput.inputEventClient (按键注入)](reference/apis/js-apis-inputeventclient.md)
- [@ohos.multimodalInput.inputMonitor (输入监听)](reference/apis/js-apis-inputmonitor.md)
......@@ -1221,6 +1367,7 @@
- [@ohos.multimodalInput.mouseEvent (鼠标输入事件)](reference/apis/js-apis-mouseevent.md)
- [@ohos.multimodalInput.pointer (鼠标指针)](reference/apis/js-apis-pointer.md)
- [@ohos.multimodalInput.touchEvent (触摸输入事件)](reference/apis/js-apis-touchevent.md)
- [@ohos.multimodalInput.shortKey (快捷键)](reference/apis/js-apis-shortKey.md)
- [@ohos.power (系统电源管理)](reference/apis/js-apis-power.md)
- [@ohos.runningLock (Runninglock锁)](reference/apis/js-apis-runninglock.md)
- [@ohos.sensor (传感器)](reference/apis/js-apis-sensor.md)
......@@ -1238,9 +1385,16 @@
- [@ohos.account.osAccount (系统帐号管理)](reference/apis/js-apis-osAccount.md)
- 定制管理
- [@ohos.configPolicy (配置策略)](reference/apis/js-apis-configPolicy.md)
- [@ohos.enterprise.EnterpriseAdminExtensionAbility (EnterpriseAdminExtensionAbility)](reference/apis/js-apis-EnterpriseAdminExtensionAbility.md)
- [@ohos.enterprise.accountManager (帐户管理)](reference/apis/js-apis-enterprise-accountManager.md)
- [@ohos.enterprise.adminManager (企业设备管理)](reference/apis/js-apis-enterprise-adminManager.md)
- [@ohos.enterprise.applicationManager (应用管理)](reference/apis/js-apis-enterprise-applicationManager.md)
- [@ohos.enterprise.bundleManager (包管理)](reference/apis/js-apis-enterprise-bundleManager.md)
- [@ohos.enterprise.dateTimeManager (系统时间管理)](reference/apis/js-apis-enterprise-dateTimeManager.md)
- [@ohos.enterprise.deviceControl (设备控制管理)](reference/apis/js-apis-enterprise-deviceControl.md)
- [@ohos.enterprise.deviceInfo (设备信息管理)](reference/apis/js-apis-enterprise-deviceInfo.md)
- [@ohos.enterprise.EnterpriseAdminExtensionAbility (EnterpriseAdminExtensionAbility)](reference/apis/js-apis-EnterpriseAdminExtensionAbility.md)
- [@ohos.enterprise.networkManager (网络管理)](reference/apis/js-apis-enterprise-networkManager.md)
- [@ohos.enterprise.wifiManager (WiFi管理)](reference/apis/js-apis-enterprise-wifiManager.md)
- 语言基础类库
- [@ohos.buffer (Buffer)](reference/apis/js-apis-buffer.md)
- [@ohos.convertxml (xml转换JavaScript)](reference/apis/js-apis-convertxml.md)
......@@ -1282,17 +1436,18 @@
- [@ohos.fileio (文件管理)](reference/apis/js-apis-fileio.md)
- [@ohos.geolocation (位置服务)](reference/apis/js-apis-geolocation.md)
- [@ohos.hiAppEvent (应用打点)](reference/apis/js-apis-hiappevent.md)
- [@ohos.multimedia.medialibrary (媒体库管理)](reference/apis/js-apis-medialibrary.md)
- [@ohos.prompt (弹窗)](reference/apis/js-apis-prompt.md)
- [@ohos.reminderAgent (后台代理提醒)](reference/apis/js-apis-reminderAgent.md)
- [@ohos.statfs (statfs)](reference/apis/js-apis-statfs.md)
- [@ohos.systemParameter (系统属性)](reference/apis/js-apis-system-parameter.md)
- [@ohos.systemTime (系统时间、时区)](reference/apis/js-apis-system-time.md)
- [@ohos.usb (USB管理)](reference/apis/js-apis-usb-deprecated.md)
- [@ohos.usbV9 (USB管理)](reference/apis/js-apis-usb.md)
- [@system.app (应用上下文)](reference/apis/js-apis-system-app.md)
- [@system.battery (电量信息)](reference/apis/js-apis-system-battery.md)
- [@system.bluetooth (蓝牙)](reference/apis/js-apis-system-bluetooth.md)
- [@system.brightness (屏幕亮度)](reference/apis/js-apis-system-brightness.md)
- [@system.cipher (加密算法)](reference/apis/js-apis-system-cipher.md)
- [@system.configuration (应用配置)](reference/apis/js-apis-system-configuration.md)
- [@system.device (设备信息)](reference/apis/js-apis-system-device.md)
- [@system.fetch (数据请求)](reference/apis/js-apis-system-fetch.md)
......@@ -1322,6 +1477,8 @@
- [PermissionDef](reference/apis/js-apis-bundle-PermissionDef.md)
- [remoteAbilityInfo](reference/apis/js-apis-bundle-remoteAbilityInfo.md)
- [shortcutInfo](reference/apis/js-apis-bundle-ShortcutInfo.md)
- data/rdb
- [resultSet (结果集)](reference/apis/js-apis-data-resultset.md)
- 错误码参考
- [通用错误码](reference/errorcodes/errorcode-universal.md)
- Ability框架
......@@ -1366,14 +1523,22 @@
- [数据共享错误码](reference/errorcodes/errorcode-datashare.md)
- [分布式数据对象错误码](reference/errorcodes/errorcode-distributed-dataObject.md)
- [分布式键值数据库错误码](reference/errorcodes/errorcode-distributedKVStore.md)
- [首选项错误码](reference/errorcodes/errorcode-preferences.md)
- [用户首选项错误码](reference/errorcodes/errorcode-preferences.md)
- 文件管理
- [文件管理子系统错误码](reference/errorcodes/errorcode-filemanagement.md)
- 电话服务
- [电话子系统错误码](reference/errorcodes/errorcode-telephony.md)
- 网络管理
- [上传下载错误码](reference/errorcodes/errorcode-request.md)
- [HTTP错误码](reference/errorcodes/errorcode-net-http.md)
- [Socket错误码](reference/errorcodes/errorcode-net-socket.md)
- [网络连接管理错误码](reference/errorcodes/errorcode-net-connection.md)
- [以太网连接错误码](reference/errorcodes/errorcode-net-ethernet.md)
- [网络共享错误码](reference/errorcodes/errorcode-net-sharing.md)
- [MDNS错误码](reference/errorcodes/errorcode-net-mdns.md)
- 通信与连接
- [Bluetooth错误码](reference/errorcodes/errorcode-bluetoothManager.md)
- [WIFI错误码](reference/errorcodes/errorcode-wifi.md)
- [NFC错误码](reference/errorcodes/errorcode-nfc.md)
- [RPC错误码](reference/errorcodes/errorcode-rpc.md)
- 系统基础能力
......@@ -1384,6 +1549,7 @@
- [Hidebug错误码](reference/errorcodes/errorcode-hiviewdfx-hidebug.md)
- [输入法框架错误码](reference/errorcodes/errorcode-inputmethod-framework.md)
- [剪贴板错误码](reference/errorcodes/errorcode-pasteboard.md)
- [锁屏服务错误码](reference/errorcodes/errorcode-screenlock.md)
- [时间时区服务错误码](reference/errorcodes/errorcode-time.md)
- [Webview错误码](reference/errorcodes/errorcode-webview.md)
- 帐号管理
......@@ -1396,7 +1562,8 @@
- [热管理错误码](reference/errorcodes/errorcode-thermal.md)
- [设备管理错误码](reference/errorcodes/errorcode-device-manager.md)
- [位置服务子系统错误码](reference/errorcodes/errorcode-geoLocationManager.md)
- [键鼠穿越管理错误码](reference/errorcodes/errorcode-multimodalinput.md)
- [键鼠穿越管理错误码](reference/errorcodes/errorcode-devicestatus.md)
- [键鼠穿越管理错误码 (待停用)](reference/errorcodes/errorcode-multimodalinput.md)
- [传感器错误码](reference/errorcodes/errorcode-sensor.md)
- [振动错误码](reference/errorcodes/errorcode-vibrator.md)
- [系统参数错误码](reference/errorcodes/errorcode-system-parameterV9.md)
......@@ -1407,8 +1574,8 @@
- 语言基础类库
- [语言基础类库错误码](reference/errorcodes/errorcode-utils.md)
- 测试
- [uitest错误码](reference/errorcodes/errorcode-uitest.md)
- 接口参考(Native API)
- [uitest错误码](reference/errorcodes/errorcode-uitest.md)
- Native接口参考
- 模块
- [Native XComponent](reference/native-apis/_o_h___native_x_component.md)
- [HiLog](reference/native-apis/_hi_log.md)
......@@ -1507,34 +1674,43 @@
- [OH_Huks_ParamSet](reference/native-apis/_o_h___huks___param_set.md)
- [OH_Huks_PubKeyInfo](reference/native-apis/_o_h___huks___pub_key_info.md)
- [OH_Huks_Result](reference/native-apis/_o_h___huks___result.md)
- 标准库
- [Node_API](reference/native-lib/third_party_napi/napi.md)
- [libuv](reference/native-lib/third_party_libuv/libuv.md)
- [支持的标准库介绍](reference/native-lib/third_party_libc/musl.md)
- 附录
- [Native api中没有导出的符号列表](reference/native-lib/third_party_libc/musl-peculiar-symbol.md)
- [Native api中导出的EGL符号列表](reference/native-lib/third_party_opengl/egl-symbol.md)
- [Native api中导出的OpenGL ES 3.0符号列表](reference/native-lib/third_party_opengl/openglesv3-symbol.md)
- 标准库
- [Node_API](reference/native-lib/third_party_napi/napi.md)
- [libuv](reference/native-lib/third_party_libuv/libuv.md)
- [支持的标准库介绍](reference/native-lib/third_party_libc/musl.md)
- 附录
- [Native api中没有导出的符号列表](reference/native-lib/third_party_libc/musl-peculiar-symbol.md)
- [Native api中由于权限管控可能调用失败的符号列表](reference/native-lib/third_party_libc/musl-permission-control-symbol.md)
- [Native api中导出的EGL符号列表](reference/native-lib/third_party_opengl/egl-symbol.md)
- [Native api中导出的OpenGL ES 3.0符号列表](reference/native-lib/third_party_opengl/openglesv3-symbol.md)
- [Native api中支持的OpenSL ES接口列表](reference/native-lib/third_party_opensles/opensles.md)
- 常见问题
- [full-SDK替换指南](quick-start/full-sdk-switch-guide.md)
- [开发语言常见问题](faqs/faqs-language.md)
- [Ability框架开发常见问题](faqs/faqs-ability.md)
- [应用程序包管理开发常见问题](faqs/faqs-bundle.md)
- [ArkUI组件(ArkTS)开发常见问题](faqs/faqs-ui-ets.md)
- [ArkUI Web组件(ArkTS)开发常见问题](faqs/faqs-web-arkts.md)
- [UI框架(JS)开发常见问题](faqs/faqs-ui-js.md)
- [公共事件与通知开发常见问题](faqs/faqs-event-notification.md)
- [如何编译full-SDK](faqs/full-sdk-compile-guide.md)
- [如何替换full-SDK](faqs/full-sdk-switch-guide.md)
- [Ability开发常见问题](faqs/faqs-ability.md)
- ArkUI框架开发常见问题(ArkTS)
- [ArkTS语法使用常见问题](faqs/faqs-arkui-arkts.md)
- [ArkUI组件开发常见问题(ArkTS)](faqs/faqs-arkui-component.md)
- [ArkUI布局开发常见问题(ArkTS)](faqs/faqs-arkui-layout.md)
- [ArkUI路由/导航开发常见问题(ArkTS)](faqs/faqs-arkui-route-nav.md)
- [ArkUI动画/交互事件开发常见问题(ArkTS)](faqs/faqs-arkui-animation-interactive-event.md)
-[ArkUI框架开发常见问题(JS)](faqs/faqs-arkui-js.md)
- [Web开发常见问题](faqs/faqs-arkui-web.md)
- [包管理开发常见问题](faqs/faqs-bundle-management.md)
- [资源管理开发常见问题](faqs/faqs-globalization.md)
- [事件通知开发常见问题](faqs/faqs-event-notification.md)
- [图形图像开发常见问题](faqs/faqs-graphics.md)
- [窗口管理开发常见问题](faqs/faqs-window-manager.md)
- [媒体开发常见问题](faqs/faqs-multimedia.md)
- [安全基础能力开发常见问题](faqs/faqs-security.md)
- [程序访问控制开发常见问题](faqs/faqs-ability-access-control.md)
- [数据管理开发常见问题](faqs/faqs-distributed-data-management.md)
- [文件管理开发常见问题](faqs/faqs-file-management.md)
- [媒体开发常见问题](faqs/faqs-media.md)
- [网络与连接开发常见问题](faqs/faqs-connectivity.md)
- [数据管理开发常见问题](faqs/faqs-data-management.md)
- [设备管理开发常见问题](faqs/faqs-device-management.md)
- [网络管理开发常见问题](faqs/faqs-network-management.md)
- [DFX开发常见问题](faqs/faqs-dfx.md)
- [国际化开发常见问题](faqs/faqs-international.md)
- [Native API使用常见问题](faqs/faqs-native.md)
- [三四方库使用常见问题](faqs/faqs-third-party-library.md)
- [IDE使用常见问题](faqs/faqs-ide.md)
- [hdc_std命令使用常见问题](faqs/faqs-hdc-std.md)
- [开发板使用常见问题](faqs/faqs-development-board.md)
<!--no_check-->
- [泛Sensor服务开发常见问题](faqs/faqs-sensor.md)
- [启动恢复开发常见问题](faqs/faqs-startup.md)
- [分布式DeviceProfrofile开发常见问题](faqs/faqs-distributed-device-profile.md)
- [SDK使用常见问题](faqs/faqs-sdk.md)
- [语言编译运行时常见问题](faqs/faqs-compiler-runtime.md)
- [三四方库使用常见问题](faqs/faqs-third-fourth-party-library.md)
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册