阅读(2484) (10)

鸿蒙OS Ability AbilityForm

2020-09-21 17:27:05 更新

显示有关另一种能力的简要信息。

根据提供或显示内容的人员,AbilityForm 的呈现涉及以下两个角色:

  • 供应商:

提供要显示的 AbilityForm 内容。供应商控制显示内容和逻辑。

  • 供应商使用单例模式。
  • 一个供应商可以为多个客户提供显示内容。

  • 客户端:

显示 AbilityForm 内容。客户端控制 AbilityForm 布局。

  • 客户只能显示一个供应商提供的内容。
  • 客户端在 AbilitySlice 对象上显示 AbilityForm。多个客户端可以在同一 AbilitySlice 上显示 AbilityForm 内容。
  • 客户可以使用 AbilitySlice 提供的布局组件来对显示在能力切片上的 AbilityForm 实例进行布局。

客户端首次显示 AbilityForm 的典型交互过程如下:

  1. 客户端调用 AbilitySlice#acquireAbilityFormAsync(Intent,OnAcquiredCallback)方法,以通过 AbilityForm 框架向供应商发送异步请求,以请求显示 AbilityForm。
  2. AbilityForm 框架在供应商上回调 Ability#onCreateForm()方法,以通知供应商的开发人员创建AbilityForm 实例。创建 AbilityForm 时需要提供布局文件。您还可以设置组件的属性,并为单击事件注册一个侦听器。
  3. AbilityForm 框架在客户端上回调 OnAcquiredCallback#onAcquired(AbilityForm)方法,以异步方式通知客户端开发人员已处理 AbilityForm 显示请求。
  4. 客户端的开发人员调用 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 对象。
从类 java.lang 继承的方法。object
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwait,[wait](https://www.zijiebao.com/harmonyos/harmonyos-5rua3cmd.html,[wait](https://www.zijiebao.com/harmonyos/harmonyos-5rua3cmd.html)
从接口 ohos.utils 继承的方法。Sequenceable
hasFileDescriptor

领域细节

PERMISSION_REQUIRE_FORM

公共静态最终string PERMISSION_REQUIRE_FORM

指示获得 AbilityForm 的权限。

用作 AbilityForm 客户端的应用程序(例如主屏幕)必须具有此权限。此权限不适用于第三方应用程序。

也可以看看:

Constant Field Values

生产者

公共静态最终 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 客户端通过执行以下步骤来启动整个页面的显示:

  1. 客户端使用 AbilityForm.OnAcquiredCallback#onAcquired(AbilityForm)中的AbilityForm#getFullPageIntent()获取启动整个页面显示的Intent
  2. 客户端使用诸如 Ability.LayoutParamsHelper#setX(int)之类的方法在获取的 Intent 中设置布局参数。
  3. 客户端调用 AbilityForm#setFullPageIntent(Intent)将配置的 Intent 传递回 AbilityForm。

也可以看看:

setFullPageIntent(Intent),getFullPageIntent()

设置全页意图

公共无效 setFullPageIntent(IntentIntent)

设置用于开始全页显示的 Intent

调用后 AbilityForm#getFullPageIntent()以获得Intent用于开始全页显示时,客户端可设定Intent参数,然后调用当前方法传递Intent回 AbilityForm。

参数:

参数名称 参数说明
Intent 指示开始全页显示的Intent

也可以看看:

startFullPage(),getFullPageIntent()