鴻蒙開發(fā):簡單實現(xiàn)一個服務(wù)卡片

前言

本文基于Api13

上篇文章,我們簡單了解了服務(wù)卡片的相關(guān)知識,那么這篇文章,我們就從0到1實現(xiàn)一個服務(wù)卡片。

創(chuàng)建卡片

創(chuàng)建卡片很簡單,可以在Application或者在元服務(wù)中,在你的主模塊下,任意的文件下進(jìn)行右鍵,選擇New->Service Widget,選擇你要實現(xiàn)靜態(tài)或者動態(tài)卡片,這里,大家不用糾結(jié),因為在創(chuàng)建完成之后,我們可以在form_config.json配置文件中,通過isDynamic參數(shù)修改卡片類型,為空或者true,則是動態(tài)卡片,false則為靜態(tài)卡片,所以,在這里,你選擇哪一個都沒問題。

目前靜態(tài)提供了5個模版,動態(tài)提供了4個,大家可以根據(jù)實際的業(yè)務(wù)需求,選擇其中一個即可。

選擇好一個模版之后,就進(jìn)入到了如下的頁面,也就是服務(wù)卡片的配置頁面,從上到下分別為,Service widget name:服務(wù)卡片的名字;Display name,卡片顯示的名字;description:卡片的描述信息;Language:開發(fā)語言,這里建議ArkTs;supportDimensions:卡片支持的外觀規(guī),1 * 2:表示1行2列的二宮格,以此類推;Ability name:卡片生命周期管理文件。

配置填完之后,點擊底部的Finish,我們就完成了一個默認(rèn)的服務(wù)卡片,可以直接運行,運行之后,長按桌面圖標(biāo)后,就會顯示卡片的選項:

點擊卡片后,就會展示出默認(rèn)的卡片UI,我們可以點擊添加至桌面:

這樣就會在桌面上顯示我們剛才創(chuàng)建的服務(wù)卡片:

卡片目錄結(jié)構(gòu)

創(chuàng)建完之后,會在我們原有的項目中生成如下文件,首先是entryformability包下的EntryFormAbility文件,它是卡片擴(kuò)展模塊,主要提供卡片創(chuàng)建、銷毀、刷新等生命周期回調(diào);widget包的pages下的WidgetCard,主要是基于ArkUI提供卡片UI開發(fā)能力;resources下的form_config.json配置文件,主要用于配置WidgetCard相關(guān)信息。

主要文件介紹

一個卡片的配置,主要是通過三個文件,也就是上面目錄結(jié)構(gòu)中的EntryFormAbility文件、WidgetCard文件和form_config.json配置文件,我們逐一進(jìn)行分析一下:

EntryFormAbility文件

主要是卡片擴(kuò)展模塊,提供卡片創(chuàng)建、銷毀、刷新等生命周期回調(diào),繼承于FormExtensionAbility,源碼如下:

export default class EntryFormAbility extends FormExtensionAbility {
  onAddForm(want: Want) {
    // Called to return a FormBindingData object.
    const formData = '';
    return formBindingData.createFormBindingData(formData);
  }

  onCastToNormalForm(formId: string) {
    // Called when the form provider is notified that a temporary form is successfully
    // converted to a normal form.
  }

  onUpdateForm(formId: string) {
    // Called to notify the form provider to update a specified form.
  }

  onFormEvent(formId: string, message: string) {
    // Called when a specified message event defined by the form provider is triggered.
  }

  onRemoveForm(formId: string) {
    // Called to notify the form provider that a specified form has been destroyed.
  }

  onAcquireFormState(want: Want) {
    // Called to return a {@link FormState} object.
    return formInfo.FormState.READY;
  }
}

onAddForm:卡片提供方接收創(chuàng)建卡片的通知接口,formBindingData.FormBindingData對象,是卡片要顯示的數(shù)據(jù);onCastToNormalForm:卡片提供方接收臨時卡片轉(zhuǎn)常態(tài)卡片的通知接口;onUpdateForm:卡片提供方接收攜帶參數(shù)的更新卡片的通知接口,獲取最新數(shù)據(jù)后調(diào)用formProvider的updateForm接口刷新卡片數(shù)據(jù);onFormEvent:卡片提供方接收處理卡片事件的通知接口;onRemoveForm:卡片提供方接收銷毀卡片的通知接口;onAcquireFormState:卡片提供方接收查詢卡片狀態(tài)通知接口,默認(rèn)返回卡片初始狀態(tài)(該方法可以選擇性重寫)。

WidgetCard文件

主要是卡片UI視圖,可以在這里對卡片進(jìn)行繪制,支持聲明式范式的部分組件、事件、動效、數(shù)據(jù)管理、狀態(tài)管理能力,在使用的時候,可以查看官方Api中是否標(biāo)記了“卡片能力”的標(biāo)記,如果標(biāo)記了,證明是可以在ArkTS卡片中使用。

form_config.json配置文件

form_config配置文件,就是服務(wù)卡片配置填的那些信息,如下所示:

{
  "forms": [
    {
      "name": "widget",
      "displayName": "$string:widget_display_name",
      "description": "$string:widget_desc",
      "src": "./ets/widget/pages/WidgetCard.ets",
      "uiSyntax": "arkts",
      "window": {
        "designWidth": 720,
        "autoDesignWidth": true
      },
      "colorMode": "auto",
      "isDynamic": true,
      "isDefault": true,
      "updateEnabled": false,
      "scheduledUpdateTime": "10:30",
      "updateDuration": 1,
      "defaultDimension": "2*2",
      "supportDimensions": [
        "2*2"
      ]
    }
  ]
}

各個字段概述如下:

相關(guān)總結(jié)

form_config配置文件里面可選的屬性非常之多,以上的表格,并未列舉全面,大家在寫的時候,一定要去官方文檔進(jìn)行查閱。

本文標(biāo)簽:HarmonyOS/服務(wù)卡片,參考資料:官方文檔之服務(wù)卡片指導(dǎo)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容