成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

HarmonyOS電量卡片

系統(tǒng) OpenHarmony
電量卡片的開發(fā)邏輯非常簡單,首先要在工程已有的模塊中新建一個ArkTS卡片;接著在卡片對應的EntryFormAbility類中編寫一個獲取電池信息的成員方法,并重寫onAddForm方法(這個方法會在卡片被創(chuàng)建時執(zhí)行),使得formData(攜帶了設備的電池信息)經(jīng)處理后傳遞給卡片頁面的本地數(shù)據(jù)庫。

想了解更多關于開源的內(nèi)容,請訪問:

51CTO 開源基礎軟件社區(qū)

https://ost.51cto.com

介紹

本期筆者將分享一個基于ArkTS的HarmonyOS電量卡片開發(fā)案例,而案例實現(xiàn)的過程也是超級簡單。


開發(fā)環(huán)境要求

● DevEco Studio版本:DevEco Studio 3.1 Release

● HarmonyOS SDK版本:API version 9

工程要求

● API9

● Stage模型

正文

實現(xiàn)邏輯

電量卡片的開發(fā)邏輯非常簡單,首先要在工程已有的模塊中新建一個ArkTS卡片;接著在卡片對應的EntryFormAbility類中編寫一個獲取電池信息的成員方法,并重寫onAddForm方法(這個方法會在卡片被創(chuàng)建時執(zhí)行),使得formData(攜帶了設備的電池信息)經(jīng)處理后傳遞給卡片頁面的本地數(shù)據(jù)庫;最后,在卡片頁面中聲明一些變量,將它們與本地數(shù)據(jù)庫綁定,同時在UI描述中將變量所攜帶的數(shù)據(jù)(與電池信息相關)通過組件渲染出來。

代碼結(jié)構(gòu)

main
├─ module.json5
├─ resources
│  ├─ zh_CN
│  ├─ rawfile
│  │  ├─ charging.png
│  │  └─ logo.png
│  ├─ en_US
│  └─ base
│     ├─ profile
│     │  ├─ form_config.json
│     │  └─ main_pages.json
│     ├─ media
│     └─ element
└─ ets
   ├─ widget
   │  └─ pages
   │     └─ WidgetCard.ets
   ├─ pages
   │  └─ Index.ets
   ├─ entryformability
   │  └─ EntryFormAbility.ts
   └─ entryability
      └─ EntryAbility.ts

關鍵代碼

form_config.json:

{
  "forms": [
    {
      "name": "widget",
      "description": "This is a service widget.",
      "src": "./ets/widget/pages/WidgetCard.ets",
      "uiSyntax": "arkts",
      "window": {
        "designWidth": 720,
        "autoDesignWidth": true
      },
      "colorMode": "auto",
      "isDefault": true,
      "updateEnabled": true,
      "scheduledUpdateTime": "07:30",
      "updateDuration": 1,
      "defaultDimension": "2*2",
      "supportDimensions": [
        "2*2"
      ]
    }
  ]
}

EntryFormAbility.ts:

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';

//導入電池信息模塊
import batteryInfo from '@ohos.batteryInfo';

export default class EntryFormAbility extends FormExtensionAbility {
  onAddForm(want) {

    //初始化卡片所攜帶的數(shù)據(jù)
    let formData = this.getBatteryInfo()
    return formBindingData.createFormBindingData(formData);
  }

  onCastToNormalForm(formId) {

  }

  onUpdateForm(formId) {
    //更新卡片所攜帶的數(shù)據(jù)
		let data = formBindingData.createFormBindingData(this.getBatteryInfo())
    formProvider.updateForm(formId,data)
  }

  onChangeFormVisibility(newStatus) {

  }

  onFormEvent(formId, message) {

  }

  onRemoveForm(formId) {

  }

  onAcquireFormState(want) {
    return formInfo.FormState.READY;
  }

  //新聲明一個成員方法, 通過batteryInfo模塊獲取電池信息
  private getBatteryInfo(){
    return {
      'BatterySOC':batteryInfo.batterySOC,
      'BatteryTemperature':batteryInfo.batteryTemperature*0.1,
      'ChargingStatus':batteryInfo.chargingStatus,
      'BatteryHealthState':batteryInfo.BatteryHealthState
    }
  }

};

Index.ets:

//實例化LocalStorage
var Store = new LocalStorage()

@Entry(Store)
@Component
struct WidgetCard {
  /*
   * The title.
   */
  readonly TITLE: string = 'Hello World';

  /*
   * The action type.
   */
  readonly ACTION_TYPE: string = 'router';

  /*
   * The ability name.
   */
  readonly ABILITY_NAME: string = 'EntryAbility';

  /*
   * The message.
   */
  readonly MESSAGE: string = 'add detail';

  /*
   * The with percentage setting.
   */
  readonly FULL_WIDTH_PERCENT: string = '100%';

  /*
   * The height percentage setting.
   */
  readonly FULL_HEIGHT_PERCENT: string = '100%';

  //變量與本地數(shù)據(jù)庫綁定
  @LocalStorageProp('BatterySOC') BatterySOC: number = 30
  @LocalStorageProp('BatteryTemperature') BatteryTemperature: number = 20
  @LocalStorageProp('ChargingStatus') ChargingStatus: boolean = true
  @LocalStorageProp('BatteryHealthState') BatteryHealthState: number = 1

  //用Array儲存批量數(shù)據(jù)
  HealthState: Array<string> = ['正常', '未知', '過熱', '過壓', '低溫', '僵死']

  build() {
    Row() {
      Column() {

        //Stack組件,使得其子組件可以層疊布局
        Stack() {

          //Progress組件用于實現(xiàn)進度條
          Progress({
            total: 100,
            value: this.BatterySOC,
            type: ProgressType.Capsule
          })
            .width('89%')
            .height(30)
            .color(Color.Pink)

          //電量文本和充電圖標
          Row() {

            Text(this.BatterySOC + '%')
              .fontSize(14)
              .fontWeight(700)

            if (this.ChargingStatus) {
              Image($rawfile('charging.png'))
                .height(20)
                .width(10)
                .margin({
                  left: 2
                })
            }

          }

        }.layoutWeight(2)
        .width(this.FULL_WIDTH_PERCENT)

        Row() {

          //Image組件
          Image($rawfile('logo.png'))
            .height('60%')
            .margin({
              left: 6
            })
            .layoutWeight(2)

          Column({
            space: 7
          }) {

            Text('電池溫度: ' + this.BatteryTemperature + '℃')
              .fontSize(10)
              .fontWeight(700)
              .margin({
                top: 19
              })

            Text('電池狀態(tài): ' + this.HealthState[this.BatteryHealthState])
              .fontSize(10)
              .fontWeight(700)

            if (this.ChargingStatus) {
              Text('正在充電')
                .fontSize(10)
                .fontWeight(700)
            } else {
              Text('正在耗電')
                .fontSize(10)
                .fontWeight(700)
            }

          }
          .height(this.FULL_HEIGHT_PERCENT)
          .layoutWeight(3)

        }.layoutWeight(3)
        .width(this.FULL_WIDTH_PERCENT)

      }
      .width(this.FULL_WIDTH_PERCENT)
    }
    .height(this.FULL_HEIGHT_PERCENT)
    .onClick(() => {
      postCardAction(this, {
        "action": this.ACTION_TYPE,
        "abilityName": this.ABILITY_NAME,
        "params": {
          "message": this.MESSAGE
        }
      });
    })
  }
}

想了解更多關于開源的內(nèi)容,請訪問:

51CTO 開源基礎軟件社區(qū)

https://ost.51cto.com

責任編輯:jianghua 來源: 51CTO 開源基礎軟件社區(qū)
相關推薦

2021-09-15 10:19:15

鴻蒙HarmonyOS應用

2021-07-22 08:45:47

鴻蒙HarmonyOS應用

2021-09-18 09:57:20

鴻蒙HarmonyOS應用

2022-04-24 15:26:38

服務卡鴻蒙

2022-05-09 11:52:38

Java卡片服務卡片

2021-08-23 10:12:41

鴻蒙HarmonyOS應用

2021-08-18 10:06:33

鴻蒙HarmonyOS應用

2021-07-20 09:58:16

鴻蒙HarmonyOS應用

2021-06-21 15:21:52

鴻蒙HarmonyOS應用開發(fā)

2022-01-19 14:30:51

鴻蒙應用服務卡片應用

2023-08-04 17:24:43

2021-08-20 14:23:14

鴻蒙HarmonyOS應用

2021-06-24 14:41:16

鴻蒙HarmonyOS應用

2021-06-30 09:27:58

鴻蒙HarmonyOS應用

2012-07-20 14:22:42

云計算

2015-09-16 15:48:55

Android性能優(yōu)化電量

2023-08-07 14:09:58

數(shù)據(jù)庫開發(fā)

2021-08-23 11:03:54

鴻蒙HarmonyOS應用

2021-07-28 14:59:08

鴻蒙HarmonyOS應用

2021-06-23 16:05:05

鴻蒙HarmonyOS應用
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 久久久噜噜噜久久中文字幕色伊伊 | 成人在线免费av | 欧美日韩视频在线 | 欧美99 | 欧美影院 | 狠狠干天天干 | 国产资源网 | 欧美a√ | 美女黄视频网站 | 2018中文字幕第一页 | 在线观看视频中文字幕 | 国产精品美女久久久久aⅴ国产馆 | 五月综合色啪 | 91看片免费 | 精品国产一区二区三区久久 | 午夜精品视频在线观看 | 国产精品视频 | 一区二区三区电影在线观看 | 精品久久久久久久久久久久久久久久久 | 中文字幕免费 | 免费中文字幕 | 日韩成人国产 | 成人精品国产一区二区4080 | 伊人久久大香线 | 99精品免费久久久久久久久日本 | 男女久久久 | 国产一区二区精华 | 三级av在线 | 91精品国产综合久久久密闭 | 欧美成视频 | 国产探花在线精品一区二区 | 日韩成人免费视频 | 精品99在线| 91久久 | 午夜看电影在线观看 | 在线天堂免费中文字幕视频 | 中文字幕亚洲在线 | 中文一区二区 | 精品免费| 精品视频国产 | 日本激情一区二区 |