鴻蒙OS Ability AbilityForm

2020-10-27 11:01 更新

顯示有關(guān)另一種能力的簡要信息。

根據(jù)提供或顯示內(nèi)容的人員,AbilityForm 的呈現(xiàn)涉及以下兩個角色:

  • 供應商:

提供要顯示的 AbilityForm 內(nèi)容。供應商控制顯示內(nèi)容和邏輯。

  • 供應商使用單例模式。
  • 一個供應商可以為多個客戶提供顯示內(nèi)容。

  • 客戶端:

顯示 AbilityForm 內(nèi)容??蛻舳丝刂?AbilityForm 布局。

  • 客戶只能顯示一個供應商提供的內(nèi)容。
  • 客戶端在 AbilitySlice 對象上顯示 AbilityForm。多個客戶端可以在同一 AbilitySlice 上顯示 AbilityForm 內(nèi)容。
  • 客戶可以使用 AbilitySlice 提供的布局組件來對顯示在能力切片上的 AbilityForm 實例進行布局。

客戶端首次顯示 AbilityForm 的典型交互過程如下:

  1. 客戶端調(diào)用 AbilitySlice#acquireAbilityFormAsync(Intent,OnAcquiredCallback)方法,以通過 AbilityForm 框架向供應商發(fā)送異步請求,以請求顯示 AbilityForm。
  2. AbilityForm 框架在供應商上回調(diào) Ability#onCreateForm()方法,以通知供應商的開發(fā)人員創(chuàng)建AbilityForm 實例。創(chuàng)建 AbilityForm 時需要提供布局文件。您還可以設置組件的屬性,并為單擊事件注冊一個偵聽器。
  3. AbilityForm 框架在客戶端上回調(diào) OnAcquiredCallback#onAcquired(AbilityForm)方法,以異步方式通知客戶端開發(fā)人員已處理 AbilityForm 顯示請求。
  4. 客戶端的開發(fā)人員調(diào)用 AbilityForm#getComponent()方法以獲得 AbilityForm 的根組件,并使用 AbilitySlice 中提供的layout方法將 AbilityForm 內(nèi)容充氣到客戶端的布局中。

供應商提供以下功能:

  • 創(chuàng)建一個 AbilityForm:客戶端的開發(fā)人員調(diào)用 AbilitySlice#acquireAbilityFormAsync(Intent,OnAcquiredCallback)通過 AbilityForm 框架向供應商發(fā)送異步請求以請求顯示 AbilityForm 之后, AbilityForm 框架將回調(diào) Ability#onCreateForm()供應商上的方法,以通知供應商的開發(fā)人員創(chuàng)建 AbilityForm 實例。創(chuàng)建 AbilityForm 時需要提供布局文件。您還可以設置組件的屬性,并為單擊事件注冊一個偵聽器。
  • 設置組件屬性:供應商的開發(fā)人員可以通過調(diào)用 AbilityForm#setText(int,String)之類的方法在客戶端上設置組件的屬性。
  • 設置單擊偵聽器:供應商的開發(fā)人員可以調(diào)用 AbilityForm#registerViewListener(int,ViewListener)偵聽特定組件的單擊事件。

客戶端提供以下功能:

  • 獲取 AbilityForm:客戶端的開發(fā)人員調(diào)用 AbilitySlice#acquireAbilityFormAsync(Intent,OnAcquiredCallback),以通過 AbilityForm 框架向供應商發(fā)送異步請求,以請求顯示 AbilityForm。
  • 發(fā)行 AbilityForm:客戶端的開發(fā)人員調(diào)用 AbilitySlice#releaseAbilityForm(AbilityForm)發(fā)行 AbilityForm。
  • 控制 AbilityForm 布局:客戶端的開發(fā)人員調(diào)用 getComponent()方法以獲得 AbilityForm 的根組件,并使用 AbilitySlice 中提供的 layout 方法將 AbilityForm 內(nèi)容充氣到客戶端的布局中。
  • 顯示完整的 AbilityForm 內(nèi)容:客戶端的開發(fā)人員調(diào)用 startFullPage()以顯示 AbilityForm 的完整內(nèi)容。

嵌套類摘要

修飾符和類型 描述
靜態(tài)界面 AbilityForm.OnAcquiredCallback 提供在客戶端上獲取或銷毀由供應商創(chuàng)建的 AbilityForm 實例時調(diào)用的回調(diào)方法。
從接口 ohos.utils 繼承的嵌套類/接口。Sequenceable
Sequenceable.Producer < T >

領(lǐng)域摘要

修飾符和類型 領(lǐng)域 描述
靜態(tài)string PERMISSION_REQUIRE_FORM 指示獲得 AbilityForm 的權(quán)限。
靜態(tài) Sequenceable.Producer < AbilityForm > PRODUCER 從 Parcel 創(chuàng)建一個 AbilityForm 實例。

構(gòu)造器摘要

建設者 描述
AbilityForm(int resId,Context context) 用于在 AbilityForm 供應商上創(chuàng)建 AbilityForm 實例的構(gòu)造函數(shù)。

方法總結(jié)

修飾符和類型 方法 描述
Component getComponent() 從供應商那里獲得 AbilityForm 的根組件。
Intent getFullPageIntent() 獲取開始全頁顯示的Intent
布爾值 marshalling(Parcel out) 將 AbilityForm 對象編組到一個Parcel中。
布爾值 registerViewListener(int viewId,ViewListener 監(jiān)聽器) 由 AbilityForm 供應商注冊一個偵聽器,以偵聽AbilityForm 客戶端上組件的點擊事件。
void sendActions(ComponentProvider remoteViewActions) 將在 ComponentProvider 對象中配置的供應商操作發(fā)送給客戶端。
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
cloneequals,finalizegetClass,hashCode,notifynotifyAll,toStringwait,[wait](http://m.o2fo.com/harmonyos/harmonyos-5rua3cmd.html,[wait](http://m.o2fo.com/harmonyos/harmonyos-5rua3cmd.html)
從接口 ohos.utils 繼承的方法。Sequenceable
hasFileDescriptor

領(lǐng)域細節(jié)

PERMISSION_REQUIRE_FORM

公共靜態(tài)最終string PERMISSION_REQUIRE_FORM

指示獲得 AbilityForm 的權(quán)限。

用作 AbilityForm 客戶端的應用程序(例如主屏幕)必須具有此權(quán)限。此權(quán)限不適用于第三方應用程序。

也可以看看:

Constant Field Values

生產(chǎn)者

公共靜態(tài)最終 Sequenceable.Producer < AbilityForm > PRODUCER

Parcel 創(chuàng)建一個 AbilityForm 實例 。

構(gòu)造器詳細信息

能力表

公共 AbilityForm(int resId,Context上下文)

用于在 AbilityForm 供應商上創(chuàng)建 AbilityForm 實例的構(gòu)造函數(shù)。

供應商使用此構(gòu)造函數(shù)來創(chuàng)建實例以響應 Ability#onCreateForm()方法。

參數(shù):

參數(shù)名稱 參數(shù)說明
resId 指示 AbilityForm 的布局資源文件的ID。
語境 指示 Ability 上下文,該上下文用于 AbilityForm 供應商的異步消息處理。

方法細節(jié)

編組

公共布爾編組(Parcel

將 AbilityForm 對象編組到一個Parcel中。

指定者:

Sequenceable 接口中 marshalling

參數(shù):

參數(shù)名稱 參數(shù)說明
out 指示要編組的宗地對象。

返回值:

如果封送成功,則返回 true;否則,返回 false。否則返回 false。

解組

public boolean unmarshalling?(Parcel in)

Unmarshals an AbilityForm object from a Parcel.

指定者:

在接口 Sequenceable中 unmarshalling 參數(shù):

參數(shù)名稱 參數(shù)說明
in 指示要解組的宗地對象。

返回值:

如果解組成功,則返回 true;否則,返回 true。否則返回 false。

getFullPageIntent

公共Intent getFullPageIntent()

獲取開始全頁顯示的 Intent。

您可以使用諸如 Ability.LayoutParamsHelper#setX(int)之類的幫助器方法在獲取的 Intent中設置整個頁面的顯示區(qū)域,然后使用 AbilityForm#setFullPageIntent(Intent)方法將修改后的Intent傳遞回 AbilityForm。

返回值:

返回開始全頁顯示的Intent。

也可以看看:

startFullPage(),setFullPageIntent(Intent)

設置文字

public void setText(int viewId,string文本)

設置要在 AbilityForm 供應商上為特定組件顯示的文本。

參數(shù):

參數(shù)名稱 參數(shù)說明
viewId 標識要設置的組件。該值不能為負數(shù)。
文本 指示要顯示的文本。

設置文字大小

public void setTextSize((int viewId,int size)

設置AbilityForm供應商上特定組件的字體大小。

參數(shù):

參數(shù)名稱 參數(shù)說明
viewId 標識要設置的組件。該值不能為負數(shù)。
尺寸 指示要設置的字體大小。該值必須大于0。

發(fā)送動作

公共無效sendActions((ComponentProvider remoteViewActions)

將在ComponentProvider對象中配置的供應商操作發(fā)送給客戶端。

然后,AbilityForm框架將這些操作應用于客戶端,以使這些操作生效。

參數(shù):

參數(shù)名稱 參數(shù)說明
remoteViewActions 指示要發(fā)送給客戶端的操作。

Throws:

Throws名稱 Throws說明
IllegalStateException 如果客戶端存根處于錯誤狀態(tài)

獲取組件

公共Component getComponent()

從供應商那里獲得AbilityForm的根組件。

返回值:

返回根組件。

注冊查看監(jiān)聽器

public boolean registerViewListener(int viewId,ViewListener 監(jiān)聽器)

由 AbilityForm 供應商注冊一個偵聽器,以偵聽 AbilityForm 客戶端上組件的點擊事件。

參數(shù):

參數(shù)名稱 參數(shù)說明
viewId 標識要偵聽的組件。
聽眾 指示單擊組件時要調(diào)用的回調(diào)方法。

返回值:

如果注冊成功,則返回 true;否則,返回 false。否則返回 false。

開始整頁

public void startFullPage()

由 AbilityForm 客戶端切換到 AbilityForm 的全頁顯示。

通常,AbilityForm 客戶端通過執(zhí)行以下步驟來啟動整個頁面的顯示:

  1. 客戶端使用 AbilityForm.OnAcquiredCallback#onAcquired(AbilityForm)中的AbilityForm#getFullPageIntent()獲取啟動整個頁面顯示的Intent。
  2. 客戶端使用諸如 Ability.LayoutParamsHelper#setX(int)之類的方法在獲取的 Intent 中設置布局參數(shù)。
  3. 客戶端調(diào)用 AbilityForm#setFullPageIntent(Intent)將配置的 Intent 傳遞回 AbilityForm。

也可以看看:

setFullPageIntent(Intent),getFullPageIntent()

設置全頁意圖

公共無效 setFullPageIntent(IntentIntent)

設置用于開始全頁顯示的 Intent

調(diào)用后 AbilityForm#getFullPageIntent()以獲得Intent用于開始全頁顯示時,客戶端可設定Intent參數(shù),然后調(diào)用當前方法傳遞Intent回 AbilityForm。

參數(shù):

參數(shù)名稱 參數(shù)說明
Intent 指示開始全頁顯示的Intent。

也可以看看:

startFullPage(),getFullPageIntent()

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號