HarmonyOS开发案列:如何实现碳监控APP

HarmonyOS开发案列:如何实现碳监控APP

项目介绍

本项目的智碳科技APP可以为用户提供碳盘查、碳会计报告的查看、实时碳排的监控、设备的智能控制等功能,助力用户向低碳生活方向迈进。

界面功能:

1.碳资产监控与管理界面,实时展示用户碳配额,帮助用户实时掌握碳资产情况。

图2-1 碳资产监控界面

2.静态碳核算界面,用户填写碳排放原料消耗,自动填充排放因子,生成碳会计报告。

图2-2 静态碳核算界面

3.智能控制减排方案,根据耗碳情况进行设备的自适应调节,结合控制确保用户优先级。

图2-3 设备控制界面

开发环境:

DevEcoStudio版本:DevEco Studio 3.1 Release

SDK版本:3.2.2.5

API版本:9

基于HarmonyOS的功能开发

▍折线图、柱状图

(1)通过类定义,函数定义,数据调用,ForEach循环渲染搭建的可传输数据的折线图组件。

图3-1 自定义折线图

对Line()线段组件开发,结合ForEach循环渲染,实现折线效果

ForEach(MainViewModel.getSettingColumnData_bg_4_jg(this.number_1,this.number_2,this.number_3,

this.number_4,this.number_5,this.number_6),(Item_zx:ItemData_2)=>{

Line()

.opacity(1)

.height(10)

.stroke('#F39423')

.strokeWidth(2)

.startPoint([Item_zx.number_1,Item_zx.number_3])//线段起//随意变动数据接口

.endPoint([Item_zx.number_2,Item_zx.number_4])//线段结束,下一级线段起//与下一级相同

})

自定义外部类并进行参数传递,接收数据实现折线图动态跳动

getSettingColumnData_bg_4_jg(num : number,num_2 : number,num_3 : number,num_4 : number,num_5 : number,num_6 : number):

Array {

let settingListData: ItemData_2[] = [

new ItemData_2(37,74,num,num_2),

new ItemData_2(0,37,num_2,num_3),

new ItemData_2(0,37,num_3,num_4),

new ItemData_2(0,37,num_4,num_5),

new ItemData_2(0,37,num_5,num_6),

];

return settingListData;

}

(2)RECT组件搭配STACK组件堆叠效果,通过.opacity属性添加透明度,渲染生成颜色富有变化的柱状图组件

图3-2 自定义柱状图

STACK堆叠代码框架

Stack(){//柱状图+背景+左侧导航栏

Row(){

Column({space:22}){//左侧Y轴

}

Column({space:20}){//线条,分线框

Row(){//表格背景栅栏格

}

}//背景+左侧导航栏

//柱状图进度条组件,共五个分格,一格46个像素

Column({space:13}){

}

Column({space:13}){

}

}

}

ForEach渲染Rect实现柱状图效果展示,.opacity属性优化界面展示效果

{

...

ForEach(MainViewModel.getSettingColumnData_zzt_1(),(Item_sj:ItemData_2)=>{

Rect().width(Item_sj.number_2).height(25).fill(Color.Black)

})

}.alignItems(HorizontalAlign.Start).width('88%').offset({x:42,y:8})

.opacity(0.1)

自定义小滑块组件

使用.animation结合点击事件布尔值判断实现动态按钮滑动

图3-3 按钮滑动效果

.animation动态变化部分代码

Rect()

.fill(Color.White)

.radius(6)

.width('50%')

.height('100%')

.offset({x:this.buer ? '50%' : 0})

.animation({

duration: 500,

tempo: 1,

curve: Curve.Ease,

playMode: PlayMode.Normal,

iterations: 1

})

TAB组件界面实现预览

使用TAB组件搭配TabContent、TabBuilder与父子组件调用,实现个性化导航栏与代码整理

图3-4 导航栏预览效果

(1)使用Tab组件实现导航栏浏览功能

Tabs({ barPosition: BarPosition.End , controller: this.tabsController }) {

TabContent() {//首页界面

//调用首页界面

Page_sy()

}//首页

.tabBar(this.TabBuilder('首页',0,$r('app.media.sy_l'),$r('app.media.sy_h')))

TabContent() {//发现,第二界面

//调用发现界面

Page_fx()

}//发现界面

.tabBar(this.TabBuilder('发现',1,$r('app.media.zc_l'),$r('app.media.zc_h')))

TabContent() {

//调用我的界面

Page_wd()

}//我的

.tabBar(this.TabBuilder('我的',2,$r('app.media.wd_l'),$r('app.media.wd_h')))

.backgroundColor(Color.Pink)

}

.onChange((index) => {

this.currentIndex = index

})

(2)使用TabBuilder实现对导航栏的自定义

@Builder TabBuilder(title: string, targetIndex: number, selectedImg: Resource, normalImg: Resource) {

Column() {

Image(this.currentIndex === targetIndex ? selectedImg : normalImg)//导航栏图片

.size({ width: this.currentIndex === targetIndex ? 30 : 25 })

.offset({y:-8})

Text(title)//导航栏文本

.fontColor(this.currentIndex === targetIndex ? '#2C77E5' : '#8a8a8a')

.offset({y:-8})

.fontWeight(FontWeight.Medium)

}

.width('100%')

.height(70)

.justifyContent(FlexAlign.Center)

.onClick(() => {//点击事件逻辑实现导航栏动态变化

this.currentIndex = targetIndex;

this.tabsController.changeIndex(this.currentIndex);

})

}

最后

如果你想成为一名鸿蒙开发者,以下这些资料将是十分优质且有价值,让你的鸿蒙开发之路事半功倍!相对于网上那些碎片化的知识内容,这份学习资料的知识点更加系统化,更容易理解和记忆。

内容包含了:【OpenHarmony多媒体技术、Stage模型、ArkUI多端部署、分布式应用开发、音频、视频、WebGL、Napi组件、OpenHarmony内核、Harmony南向开发、鸿蒙项目实战】等技术知识点。

鸿蒙Next全套VIP学习资料←点击领取!(安全链接,放心点击)

1.鸿蒙核心技术学习路线

2.大厂面试必问面试题

3.鸿蒙南向开发技术

4.鸿蒙APP开发必备

5.HarmonyOS Next 最新全套视频教程

6.鸿蒙生态应用开发白皮书V2.0PDF

这份全套完整版的学习资料已经全部打包好,朋友们如果需要可以点击→鸿蒙Next全套VIP学习资料:免费领取(安全链接,放心点击)

相关推荐

2025男包十大品牌排行榜
beat365唯一的网址

2025男包十大品牌排行榜

07-17 👁️‍🗨️ 5187
鹦鹉为啥喜欢咬东西?原来有这个目的
beat365唯一的网址

鹦鹉为啥喜欢咬东西?原来有这个目的

09-11 👁️‍🗨️ 4493
金冲及:较量——东北解放战争的最初阶段
beat365唯一的网址

金冲及:较量——东北解放战争的最初阶段

07-19 👁️‍🗨️ 3043
是否真的够快够畅快?——vivo X6深度体验!
beat365唯一的网址

是否真的够快够畅快?——vivo X6深度体验!

10-04 👁️‍🗨️ 3249
北美电器(ACA)EH18A料理机
beat365唯一的网址

北美电器(ACA)EH18A料理机

07-20 👁️‍🗨️ 7003
Eclipse安装使用步骤
365scores下载

Eclipse安装使用步骤

09-27 👁️‍🗨️ 1259
杭州招财猫理财怎么样?安全收益、产品评测及用户口碑解析
Edge浏览器获取Cookie和User-Agent方法
365scores下载

Edge浏览器获取Cookie和User-Agent方法

06-29 👁️‍🗨️ 9860
康师傅哪款泡面好吃
bat365入口

康师傅哪款泡面好吃

09-01 👁️‍🗨️ 6622