鸿蒙OS Ability AbilityForm
显示有关另一种能力的简要信息。
根据提供或显示内容的人员,AbilityForm 的呈现涉及以下两个角色:
- 供应商:
提供要显示的 AbilityForm 内容。供应商控制显示内容和逻辑。
- 供应商使用单例模式。
- 一个供应商可以为多个客户提供显示内容。
- 客户端:
显示 AbilityForm 内容。客户端控制 AbilityForm 布局。
- 客户只能显示一个供应商提供的内容。
- 客户端在 AbilitySlice 对象上显示 AbilityForm。多个客户端可以在同一 AbilitySlice 上显示 AbilityForm 内容。
- 客户可以使用 AbilitySlice 提供的布局组件来对显示在能力切片上的 AbilityForm 实例进行布局。
客户端首次显示 AbilityForm 的典型交互过程如下:
- 客户端调用 AbilitySlice#acquireAbilityFormAsync(Intent,OnAcquiredCallback)方法,以通过 AbilityForm 框架向供应商发送异步请求,以请求显示 AbilityForm。
- AbilityForm 框架在供应商上回调 Ability#onCreateForm()方法,以通知供应商的开发人员创建AbilityForm 实例。创建 AbilityForm 时需要提供布局文件。您还可以设置组件的属性,并为单击事件注册一个侦听器。
- AbilityForm 框架在客户端上回调 OnAcquiredCallback#onAcquired(AbilityForm)方法,以异步方式通知客户端开发人员已处理 AbilityForm 显示请求。
- 客户端的开发人员调用 AbilityForm#getComponent()方法以获得 AbilityForm 的根组件,并使用 AbilitySlice 中提供的layout方法将 AbilityForm 内容充气到客户端的布局中。
供应商提供以下功能:
- 创建一个 AbilityForm:客户端的开发人员调用 AbilitySlice#acquireAbilityFormAsync(Intent,OnAcquiredCallback)通过 AbilityForm 框架向供应商发送异步请求以请求显示 AbilityForm 之后, AbilityForm 框架将回调 Ability#onCreateForm()供应商上的方法,以通知供应商的开发人员创建 AbilityForm 实例。创建 AbilityForm 时需要提供布局文件。您还可以设置组件的属性,并为单击事件注册一个侦听器。
- 设置组件属性:供应商的开发人员可以通过调用 AbilityForm#setText(int,String)之类的方法在客户端上设置组件的属性。
- 设置单击侦听器:供应商的开发人员可以调用 AbilityForm#registerViewListener(int,ViewListener)侦听特定组件的单击事件。
客户端提供以下功能:
- 获取 AbilityForm:客户端的开发人员调用 AbilitySlice#acquireAbilityFormAsync(Intent,OnAcquiredCallback),以通过 AbilityForm 框架向供应商发送异步请求,以请求显示 AbilityForm。
- 发行 AbilityForm:客户端的开发人员调用 AbilitySlice#releaseAbilityForm(AbilityForm)发行 AbilityForm。
- 控制 AbilityForm 布局:客户端的开发人员调用 getComponent()方法以获得 AbilityForm 的根组件,并使用 AbilitySlice 中提供的 layout 方法将 AbilityForm 内容充气到客户端的布局中。
- 显示完整的 AbilityForm 内容:客户端的开发人员调用 startFullPage()以显示 AbilityForm 的完整内容。
嵌套类摘要
修饰符和类型 | 类 | 描述 |
---|---|---|
静态界面 | AbilityForm.OnAcquiredCallback | 提供在客户端上获取或销毁由供应商创建的 AbilityForm 实例时调用的回调方法。 |
从接口 ohos.utils 继承的嵌套类/接口。Sequenceable |
---|
Sequenceable.Producer < T > |
领域摘要
修饰符和类型 | 领域 | 描述 |
---|---|---|
静态string | PERMISSION_REQUIRE_FORM | 指示获得 AbilityForm 的权限。 |
静态 Sequenceable.Producer < AbilityForm > | PRODUCER | 从 Parcel 创建一个 AbilityForm 实例。 |
构造器摘要
建设者 | 描述 |
---|---|
AbilityForm(int resId,Context context) | 用于在 AbilityForm 供应商上创建 AbilityForm 实例的构造函数。 |
方法总结
修饰符和类型 | 方法 | 描述 |
---|---|---|
Component | getComponent() | 从供应商那里获得 AbilityForm 的根组件。 |
Intent | getFullPageIntent() | 获取开始全页显示的Intent。 |
布尔值 | marshalling(Parcel out) | 将 AbilityForm 对象编组到一个Parcel中。 |
布尔值 | registerViewListener(int viewId,ViewListener 监听器) | 由 AbilityForm 供应商注册一个侦听器,以侦听AbilityForm 客户端上组件的点击事件。 |
void | sendActions(ComponentProvider remoteViewActions) | 将在 ComponentProvider 对象中配置的供应商操作发送给客户端。 |
void | setFullPageIntent(IntentIntent) | 设置用于开始全页显示的 Intent。 |
void | setText(int viewId,string文本) | 设置要在 AbilityForm 供应商上为特定组件显示的文本。 |
void | setTextSize(int viewId,int size) | 设置 AbilityForm 供应商上特定组件的字体大小。 |
void | startFullPage() | 由 AbilityForm 客户端切换到 AbilityForm 的全页显示。 |
布尔值 | unmarshalling(Parcel in) | 从宗地中解组 AbilityForm 对象。 |
从接口 ohos.utils 继承的方法。Sequenceable |
---|
hasFileDescriptor |
领域细节
PERMISSION_REQUIRE_FORM
公共静态最终string PERMISSION_REQUIRE_FORM
指示获得 AbilityForm 的权限。
用作 AbilityForm 客户端的应用程序(例如主屏幕)必须具有此权限。此权限不适用于第三方应用程序。
也可以看看:
生产者
公共静态最终 Sequenceable.Producer < AbilityForm > PRODUCER
从 Parcel 创建一个 AbilityForm 实例 。
构造器详细信息
能力表
公共 AbilityForm(int resId,Context上下文)
用于在 AbilityForm 供应商上创建 AbilityForm 实例的构造函数。
供应商使用此构造函数来创建实例以响应 Ability#onCreateForm()方法。
参数:
参数名称 | 参数说明 |
---|---|
resId | 指示 AbilityForm 的布局资源文件的ID。 |
语境 | 指示 Ability 上下文,该上下文用于 AbilityForm 供应商的异步消息处理。 |
方法细节
编组
公共布尔编组(Parcel)
将 AbilityForm 对象编组到一个Parcel中。
指定者:
在 Sequenceable 接口中 marshalling
参数:
参数名称 | 参数说明 |
---|---|
out | 指示要编组的宗地对象。 |
返回值:
如果封送成功,则返回 true;否则,返回 false。否则返回 false。
解组
public boolean unmarshalling(Parcel in)
Unmarshals an AbilityForm object from a Parcel.
指定者:
在接口 Sequenceable中 unmarshalling 参数:
参数名称 | 参数说明 |
---|---|
in | 指示要解组的宗地对象。 |
返回值:
如果解组成功,则返回 true;否则,返回 true。否则返回 false。
getFullPageIntent
公共Intent getFullPageIntent()
获取开始全页显示的 Intent。
您可以使用诸如 Ability.LayoutParamsHelper#setX(int)之类的帮助器方法在获取的 Intent中设置整个页面的显示区域,然后使用 AbilityForm#setFullPageIntent(Intent)方法将修改后的Intent传递回 AbilityForm。
返回值:
返回开始全页显示的Intent。
也可以看看:
startFullPage(),setFullPageIntent(Intent)
设置文字
public void setText(int viewId,string文本)
设置要在 AbilityForm 供应商上为特定组件显示的文本。
参数:
参数名称 | 参数说明 |
---|---|
viewId | 标识要设置的组件。该值不能为负数。 |
文本 | 指示要显示的文本。 |
设置文字大小
public void setTextSize((int viewId,int size)
设置AbilityForm供应商上特定组件的字体大小。
参数:
参数名称 | 参数说明 |
---|---|
viewId | 标识要设置的组件。该值不能为负数。 |
尺寸 | 指示要设置的字体大小。该值必须大于0。 |
发送动作
公共无效sendActions((ComponentProvider remoteViewActions)
将在ComponentProvider对象中配置的供应商操作发送给客户端。
然后,AbilityForm框架将这些操作应用于客户端,以使这些操作生效。
参数:
参数名称 | 参数说明 |
---|---|
remoteViewActions | 指示要发送给客户端的操作。 |
Throws:
Throws名称 | Throws说明 |
---|---|
IllegalStateException | 如果客户端存根处于错误状态 |
获取组件
公共Component getComponent()
从供应商那里获得AbilityForm的根组件。
返回值:
返回根组件。
注册查看监听器
public boolean registerViewListener(int viewId,ViewListener 监听器)
由 AbilityForm 供应商注册一个侦听器,以侦听 AbilityForm 客户端上组件的点击事件。
参数:
参数名称 | 参数说明 |
---|---|
viewId | 标识要侦听的组件。 |
听众 | 指示单击组件时要调用的回调方法。 |
返回值:
如果注册成功,则返回 true;否则,返回 false。否则返回 false。
开始整页
public void startFullPage()
由 AbilityForm 客户端切换到 AbilityForm 的全页显示。
通常,AbilityForm 客户端通过执行以下步骤来启动整个页面的显示:
- 客户端使用 AbilityForm.OnAcquiredCallback#onAcquired(AbilityForm)中的AbilityForm#getFullPageIntent()获取启动整个页面显示的Intent。
- 客户端使用诸如 Ability.LayoutParamsHelper#setX(int)之类的方法在获取的 Intent 中设置布局参数。
- 客户端调用 AbilityForm#setFullPageIntent(Intent)将配置的 Intent 传递回 AbilityForm。
也可以看看:
setFullPageIntent(Intent),getFullPageIntent()
设置全页意图
公共无效 setFullPageIntent(IntentIntent)
设置用于开始全页显示的 Intent。
调用后 AbilityForm#getFullPageIntent()以获得Intent用于开始全页显示时,客户端可设定Intent参数,然后调用当前方法传递Intent回 AbilityForm。
参数:
参数名称 | 参数说明 |
---|---|
Intent | 指示开始全页显示的Intent。 |
也可以看看:
startFullPage(),getFullPageIntent()