鴻蒙HarmonyOS實戰-Stage模型(服務卡片的模組和建立)

蜀道山QAQ發表於2024-05-17

🚀一、服務卡片的模組和建立

在HarmonyOS中,服務卡片是一種提供即時資訊和快速操作的小元件,類似於Android中的通知欄。服務卡片可以顯示各種型別的資訊,包括通知、天氣、日曆事件、音樂播放器、快捷方式等。使用者可以根據自己的需求配置服務卡片,並透過輕掃或點選來檢視詳細資訊或執行操作。此外,服務卡片還支援互動操作,例如滑動、拖動和長按等,以實現更多功能。使用者可以透過設定中的服務卡片管理來管理和定製自己的服務卡片。總的來說,服務卡片是HarmonyOS提供的一種方便快捷的資訊展示和操作方式,使用者可以根據自己的喜好和需求進行個性化設定和使用。

🔎1.ArkTS卡片相關模組

image

image

🔎2.ArkTS卡片建立

🦋2.1 建立一個ArkTS卡片

1、新建卡片
image

2、根據實際業務場景,選擇一個卡片模板
image

3、在選擇卡片的開發語言型別
image

4、建立完成後如下
image

🦋2.2 配置卡片的配置檔案

1、卡片需要在module.json5配置檔案中的extensionAbilities標籤下
image

2、卡怕具體配置在form_config.json下
image

詳細配置資訊可以參考:https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/arkts-ui-widget-configuration-0000001502333060-V3

🦋2.3 卡片生命週期管理

import formInfo from '@ohos.app.form.formInfo';
import formBindingData from '@ohos.app.form.formBindingData';
import FormExtensionAbility from '@ohos.app.form.FormExtensionAbility';
import formProvider from '@ohos.app.form.formProvider';

export default class EntryFormAbility extends FormExtensionAbility {
  onAddForm(want) {
    console.info('[EntryFormAbility] onAddForm');
    // 在入參want中可以取出卡片的唯一標識:formId
    let formId: string = want.parameters[formInfo.FormParam.IDENTITY_KEY];
    // 使用方建立卡片時觸發,提供方需要返回卡片資料繫結類
    let obj = {
      'title': 'titleOnAddForm',
      'detail': 'detailOnAddForm'
    };
    let formData = formBindingData.createFormBindingData(obj);
    return formData;
  }

  onCastToNormalForm(formId) {
    // Called when the form provider is notified that a temporary form is successfully
    // converted to a normal form.
    // 使用方將臨時卡片轉換為常態卡片觸發,提供方需要做相應的處理
    console.info(`[EntryFormAbility] onCastToNormalForm, formId: ${formId}`);
  }

  onUpdateForm(formId) {
    // 若卡片支援定時更新/定點更新/卡片使用方主動請求更新功能,則提供方需要重寫該方法以支援資料更新
    console.info('[EntryFormAbility] onUpdateForm');
    let obj = {
      'title': 'titleOnUpdateForm',
      'detail': 'detailOnUpdateForm'
    };
    let formData = formBindingData.createFormBindingData(obj);
    formProvider.updateForm(formId, formData).catch((err) => {
      if (err) {
        // 異常分支列印
        console.error(`[EntryFormAbility] Failed to updateForm. Code: ${err.code}, message: ${err.message}`);
        return;
      }
    });
  }

  onChangeFormVisibility(newStatus) {
    // Called when the form provider receives form events from the system.
    // 需要配置formVisibleNotify為true,且為系統應用才會回撥
    console.info('[EntryFormAbility] onChangeFormVisibility');
  }

  onFormEvent(formId, message) {
    // Called when a specified message event defined by the form provider is triggered.
    // 若卡片支援觸發事件,則需要重寫該方法並實現對事件的觸發
    console.info('[EntryFormAbility] onFormEvent');
  }

  onRemoveForm(formId) {
    // Called to notify the form provider that a specified form has been destroyed.
    // 當對應的卡片刪除時觸發的回撥,入參是被刪除的卡片ID
    console.info('[EntryFormAbility] onRemoveForm');
  }

  onConfigurationUpdate(config) {
    // 當系統配置資訊置更新時觸發的回撥
    console.info('[EntryFormAbility] configurationUpdate:' + JSON.stringify(config));
  }

  onAcquireFormState(want) {
    // Called to return a {@link FormState} object.
    // 卡片提供方接收查詢卡片狀態通知介面,預設返回卡片初始狀態。
    return formInfo.FormState.READY;
  }
}

image

🚀寫在最後

  • 如果你覺得這篇內容對你還蠻有幫助,我想邀請你幫我三個小忙:
  • 點贊,轉發,有你們的 『點贊和評論』,才是我創造的動力。
  • 關注小編,同時可以期待後續文章ing🚀,不定期分享原創知識。
  • 更多鴻蒙最新技術知識點,請關注作者部落格:https://t.doruo.cn/14DjR1rEY

image

相關文章