一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

HarmonyOS 3.1上實現(xiàn)計步卡片

OpenHarmony技術(shù)社區(qū) ? 來源:OST開源開發(fā)者 ? 2023-05-29 11:10 ? 次閱讀

本篇帖子是參考 Codelab 基于 Stage 模型 JS 服務(wù)卡片,使用最新 ArkTS 元服務(wù)開發(fā)的,實現(xiàn)帶有卡片的計步應(yīng)用,用于介紹卡片的開發(fā)及生命周期實現(xiàn)。

需要完成以下功能:

消息通知欄,通知用戶今天所行走步數(shù)(行走步數(shù)是模擬的)。

元服務(wù)卡片,在桌面上添加 2x2 或 2x4 規(guī)格元服務(wù)卡片,能看到步數(shù)變化,也能看到當(dāng)天所行走的進度。

關(guān)系型數(shù)據(jù)庫,用于查詢,添加用戶行走的數(shù)據(jù)。

知識點

消息通知:提供通知管理的能力,包括發(fā)布、取消發(fā)布通知,創(chuàng)建、獲取、移除通知通道,訂閱、取消訂閱通知,獲取通知的使能狀態(tài)、角標(biāo)使能狀態(tài),獲取通知的相關(guān)信息等。

關(guān)系型數(shù)據(jù)庫:關(guān)系型數(shù)據(jù)庫基于 SQLite 組件提供了一套完整的對本地數(shù)據(jù)庫進行管理的機制,對外提供了一系列的增、刪、改、查等接口,也可以直接運行用戶輸入的 SQL 語句來滿足復(fù)雜的場景需要。

元服務(wù)卡片開發(fā):卡片是一種界面展示形式,可以將應(yīng)用的重要信息或操作前置到卡片,以達到服務(wù)直達、減少體驗層級的目的。

卡片提供方:顯示卡片內(nèi)容,控制卡片布局以及控件點擊事件。

卡片使用方:顯示卡片內(nèi)容的宿主應(yīng)用,控制卡片在宿主中展示的位置。

卡片管理服務(wù):用于管理系統(tǒng)中所添加卡片的常駐代理服務(wù),包括卡片對象的管理與使用,以及卡片周期性刷新等。

軟件要求:

DevEco Studio版本:DevEco Studio 3.1 Release及以上版本。

HarmonyOS SDK版本:API version 9及以上版本。

硬件要求:

設(shè)備類型:華為手機 3.1 系統(tǒng)或運行在 DevEco Studio 上的遠程模擬器 API9。

HarmonyOS 系統(tǒng):3.1.0 DeveloperRelease 及以上版本。

講解

卡片更新邏輯和Codelabs是一樣的,詳情可以移步到 Stage 模型卡片(ArkTS)細看,這里主要講解一下 ArKTS 開發(fā)服務(wù)卡片。

Codelabs 開發(fā)的是 JS 服務(wù)卡片,還有在把這個 JS 卡片改為用 ArkTS 過程中,需要注意的地方:

使用關(guān)系型數(shù)據(jù)庫時,Codelabs 與使用最新版本 API 不同之處:

Codelabs 源碼:

awaitDataRdb.getRdbStore(context,CommonConstants.RDB_STORE_CONFIG)
.then((rdbStore:DataRdb.RdbStore)=>{
本項目源碼:
awaitDataRdb.getRdbStore(context,CommonConstants.RDB_STORE_CONFIG)
.then((rdbStore)=>{

②使用 Chart 組件和 Polyline 組件:

在 JS 服務(wù)卡片可以使用 Chart 組件來生成曲線圖表:


在 ArkTS 服務(wù)卡片,使用不了 Chart 組件,用 Polyline 組件來代替:

Polyline().width('100%').height('100%').points(this.setPolyLine(this.datasets))

默認 EntryAbility.ts 和 EntryFormAbility.ts 兩個文件的后輟都是 ts 的,其他文件后輟是 ets 的,當(dāng)想在這兩個文件 import 其它文件時,提示以下信息,于是我把這兩個文件后輟都改為 ets 了。

ImportingArkTSfilestoJSandTSfilesisnotallowed.

服務(wù)卡片如何接收更新數(shù)據(jù),卡片頁面如何接收,后臺如何更新。

卡片頁面如何接收,比如步數(shù)參數(shù)如何定義:

letstorage=newLocalStorage();

@Entry(storage)
@Component
structWidgetCard{
@LocalStorageProp('steps')steps:number=0;

后臺如何更新:

//創(chuàng)建卡片
letformData:FormData=newFormData();
formData.percent=0;
formData.steps=0;
returnFormBindingData.createFormBindingData(formData);
//更新卡片
FormProvider.updateForm(formData.formId,FormBindingData.createFormBindingData(formData))

2x2 卡片界面部分代碼:

Stack(){
Image($r("app.media.icon_2x2_card_background"))
.width(this.FULL_WIDTH_PERCENT)
.height(this.FULL_HEIGHT_PERCENT)
.objectFit(ImageFit.Cover)

Progress({value:this.percent,total:100,type:ProgressType.Ring}).width(100).height(100)
.color(Color.White)//進度條前景色為灰色
.style({strokeWidth:12})//設(shè)置strokeWidth進度條寬度為12vp
Column(){
Text('步數(shù)')
.fontSize(10)
.fontColor($r('app.color.text_font_color'))
Text(this.steps.toString())
.fontSize(26)
.fontColor($r('app.color.text_font_color'))
Text('步')
.fontSize(10)
.fontColor($r('app.color.text_font_color'))
}
.width(this.FULL_WIDTH_PERCENT)
.height(this.FULL_HEIGHT_PERCENT)
.alignItems(HorizontalAlign.Center)
.justifyContent(FlexAlign.Center)
.padding($r('app.float.column_padding'))
}
.width(this.FULL_WIDTH_PERCENT)
.height(this.FULL_HEIGHT_PERCENT)
.onClick(()=>{
postCardAction(this,{
"action":"router",
"abilityName":"EntryAbility",
"params":{
"message":"adddetail"
}
});
})

2x4 卡片界面部分代碼:

Stack(){
Image($r("app.media.icon_2x4_card_background"))
.width(this.FULL_WIDTH_PERCENT)
.height(this.FULL_HEIGHT_PERCENT)
.objectFit(ImageFit.Cover)
Row(){
Column(){
Text(`今天走了${this.mileage}米`)
.fontSize(16)
.fontWeight(400)
.opacity(0.9)
.fontColor($r('app.color.text_font_color'))
Row(){
Text(this.steps.toString())
.fontSize(40)
.fontWeight(700)
.fontColor($r('app.color.text_font_color'))
Text('步')
.fontSize(16)
.fontWeight(400)
.opacity(0.9)
.fontColor($r('app.color.text_font_color'))
.margin({left:5,bottom:-10})
}
.margin({top:10,bottom:10})
Text(`${this.percent}%`)
.fontSize(16)
.fontWeight(400)
.fontColor($r('app.color.text_font_color'))
Progress({value:this.percent,total:100,type:ProgressType.Linear})
.color('#FFFFFF')
.backgroundColor('#40FFFFFF')
.style({strokeWidth:6})
.margin({top:4})
}
.width('50%')
.height(this.FULL_HEIGHT_PERCENT)
.alignItems(HorizontalAlign.Start)
.justifyContent(FlexAlign.Center)
.padding($r('app.float.column_padding'))
Column(){
Polyline()
.width('100%').height('100%')
.points(this.setPolyLine(this.datasets))
.strokeDashOffset(-50)
.fillOpacity(0)
.strokeOpacity(0.5)
.stroke(Color.White)
.strokeWidth(3)
//設(shè)置折線拐角處為圓弧
.strokeLineJoin(LineJoinStyle.Round)
//設(shè)置折線兩端為半圓
.strokeLineCap(LineCapStyle.Round)
}
.width('50%')
}

}
.width(this.FULL_WIDTH_PERCENT)
.height(this.FULL_HEIGHT_PERCENT)

總結(jié)

通過學(xué)習(xí) Cabelabs 案例,我們可以快速學(xué)到實踐知識,通過查看文檔指南,我們可以了解到更細的知識點。

當(dāng)我們腦子里有了一個應(yīng)用的模型,所以通過 Codelabs 相似案例知識點,加上查看文檔指南、API 參考,平常多看和參加學(xué)堂視頻課程,有了一定的知識量,做項目或回答一些問題,就是這么簡單了。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 數(shù)據(jù)庫
    +關(guān)注

    關(guān)注

    7

    文章

    3885

    瀏覽量

    65603
  • 模型
    +關(guān)注

    關(guān)注

    1

    文章

    3469

    瀏覽量

    49854
  • SQlite
    +關(guān)注

    關(guān)注

    0

    文章

    81

    瀏覽量

    16282
  • HarmonyOS
    +關(guān)注

    關(guān)注

    79

    文章

    2006

    瀏覽量

    31873

原文標(biāo)題:HarmonyOS 3.1上實現(xiàn)“計步卡片”

文章出處:【微信號:gh_834c4b3d87fe,微信公眾號:OpenHarmony技術(shù)社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦
    熱點推薦

    HarmonyOS服務(wù)卡片跑AIGC

    我們認為基于 AIGC 能力類型的 HarmonyOS 元服務(wù)萬能卡片應(yīng)該通過 API 方式調(diào)用合規(guī)訓(xùn)練后的各具特色的模型與角色來服務(wù)用戶,通過萬能卡片、智能語音、手勢動作等更加自然友好的方式來和用戶交互。
    的頭像 發(fā)表于 04-25 09:40 ?2662次閱讀
    <b class='flag-5'>HarmonyOS</b>服務(wù)<b class='flag-5'>卡片</b>跑AIGC

    OpenHarmony開發(fā)案例:【計步器卡片

    基于Stage模型實現(xiàn)帶有卡片應(yīng)用,用于介紹卡片的開發(fā)及生命周期實現(xiàn)。
    的頭像 發(fā)表于 04-15 09:22 ?866次閱讀
    OpenHarmony開發(fā)案例:【計步器<b class='flag-5'>卡片</b>】

    HarmonyOS服務(wù)卡片快速開發(fā)

    HarmonyOS服務(wù)卡片快速開發(fā)
    發(fā)表于 06-19 13:52

    一文看懂HarmonyOS服務(wù)卡片運行原理和開發(fā)方法

    :1. 配置config.json2. 實現(xiàn)生命周期回調(diào)方法3. 開發(fā)卡片界面元素4. 實現(xiàn)卡片界面交互1.配置config.jsonc
    發(fā)表于 07-27 17:21

    HarmonyOS服務(wù)卡片動手實驗室資料

    本實驗通過在電腦采用 DevEco Studio 搭建 HarmonyOS 服務(wù)卡片開發(fā)工程,并以三個應(yīng)用場景實踐作為演練,輔助理解掌握 HarmonyOS 服務(wù)
    發(fā)表于 07-31 19:23

    基于HarmonyOS Java UI 實現(xiàn)簡易的時鐘卡片應(yīng)用

    1. 介紹服務(wù)卡片是FA的一種界面展示形式,將FA重要信息或操作前置到卡片,以此達到服務(wù)直達、減少層級體驗的目的。本篇Codelab主要介紹如何在HarmonyOS開發(fā)一個時鐘類FA
    發(fā)表于 08-18 10:47

    HarmonyOS卡片開發(fā)--服務(wù)卡片概述

    服務(wù)。 卡片提供方實例管理模塊:由卡片提供方開發(fā)者實現(xiàn),負責(zé)對卡片管理服務(wù)分配的卡片實例進行持久化管理。 通信適配層:由
    發(fā)表于 09-22 14:10

    HarmonyOS之服務(wù)卡片(Java)開發(fā)步驟

    ”是綁定組件的resultcode,當(dāng)需要設(shè)置卡片多個組件的點擊事件時,設(shè)置不同的resultcode即可。IntentAgentInfo paramsInfo = new
    發(fā)表于 07-26 16:17

    華為開發(fā)者HarmonyOS零基礎(chǔ)入門:15分鐘玩轉(zhuǎn)harmonyOS服務(wù)卡片

    華為開發(fā)者HarmonyOS零基礎(chǔ)入門:15分鐘玩轉(zhuǎn)harmonyOS服務(wù)卡片,服務(wù)卡片顏值高、擁有服務(wù)直達功能。
    的頭像 發(fā)表于 10-23 11:40 ?2385次閱讀
    華為開發(fā)者<b class='flag-5'>HarmonyOS</b>零基礎(chǔ)入門:15分鐘玩轉(zhuǎn)<b class='flag-5'>harmonyOS</b>服務(wù)<b class='flag-5'>卡片</b>

    零基礎(chǔ)入門HarmonyOS-部分卡片模板效果展示

    零基礎(chǔ)入門HarmonyOS-部分卡片模板效果展示
    的頭像 發(fā)表于 10-23 11:51 ?1358次閱讀
    零基礎(chǔ)入門<b class='flag-5'>HarmonyOS</b>-部分<b class='flag-5'>卡片</b>模板效果展示

    零基礎(chǔ)入門HarmonyOS-卡片內(nèi)容布局描述

    零基礎(chǔ)入門HarmonyOS-卡片內(nèi)容布局描述
    的頭像 發(fā)表于 10-23 11:56 ?1873次閱讀
    零基礎(chǔ)入門<b class='flag-5'>HarmonyOS</b>-<b class='flag-5'>卡片</b>內(nèi)容布局描述

    零基礎(chǔ)入門HarmonyOS-綁定卡片數(shù)據(jù)展示

    零基礎(chǔ)入門HarmonyOS-綁定卡片數(shù)據(jù)展示
    的頭像 發(fā)表于 10-23 11:59 ?1477次閱讀
    零基礎(chǔ)入門<b class='flag-5'>HarmonyOS</b>-綁定<b class='flag-5'>卡片</b>數(shù)據(jù)展示

    零基礎(chǔ)入門HarmonyOS-響應(yīng)卡片交互事件

    2021 HDC2021華為開發(fā)者分論壇零基礎(chǔ)入門HarmonyOS-響應(yīng)卡片交互事件
    的頭像 發(fā)表于 10-23 13:03 ?1493次閱讀
    零基礎(chǔ)入門<b class='flag-5'>HarmonyOS</b>-響應(yīng)<b class='flag-5'>卡片</b>交互事件

    HarmonyOS服務(wù)卡片如何換膚

      關(guān)注HarmonyOS的小伙伴肯定對服務(wù)卡片已經(jīng)很熟悉了。服務(wù)卡片(也簡稱為“卡片”)是FA(FeatureAbility,元服務(wù))的一種界面展示形式,將FA的重要信息或操作前置到
    的頭像 發(fā)表于 02-12 10:28 ?3129次閱讀
    <b class='flag-5'>HarmonyOS</b>服務(wù)<b class='flag-5'>卡片</b>如何換膚

    用Java開發(fā)HarmonyOS服務(wù)卡片

    卡片服務(wù):由卡片提供方開發(fā)者實現(xiàn),開發(fā)者實現(xiàn) onCreateForm、onUpdateForm 和 onDeleteForm 處理創(chuàng)建卡片
    的頭像 發(fā)表于 04-26 11:04 ?1727次閱讀