基础ArkTS组件:数据面板组件(图表),日期选择器组件(HarmonyOS学习第三课【3.5】)
创始人
2024-11-10 03:38:15
0

tuoz数据面板组件

DataPanel

数据面板组件,用于将多个数据占比情况使用占比图进行展示。

说明

该组件从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。

子组件

接口

DataPanel(options:{values: number[], max?: number, type?: DataPanelType})

从API version 9开始,该接口支持在ArkTS卡片中使用。

参数:

参数名

参数类型

必填

参数描述

values

number[]

数据值列表,最多包含9个数据,大于9个数据则取前9个数据。若数据值小于0则置为0。

max

number

- max大于0,表示数据的最大值。

- max小于等于0,max等于value数组各项的和,按比例显示。

默认值:100

type8+

DataPanelType

数据面板的类型(不支持动态修改)。

默认值:DataPanelType.Circle

属性

除支持通用属性外,还支持以下属性:

名称

类型

描述

closeEffect

boolean

关闭数据占比图表旋转动效。

默认值:false

DataPanelType枚举说明

从API version 9开始,该接口支持在ArkTS卡片中使用。

名称

描述

Line

线型数据面板。

Circle

环形数据面板。

示例

// xxx.ets @Entry @Component struct DataPanelExample {   public valueArr: number[] = [10, 10, 10, 10, 10, 10, 10, 10, 10]    build() {     Column({ space: 5 }) {       Row() {         Stack() {           DataPanel({ values: [30], max: 100, type: DataPanelType.Circle }).width(168).height(168)           Column() {             Text('30').fontSize(35).fontColor('#182431')             Text('1.0.0').fontSize(9.33).lineHeight(12.83).fontWeight(500).opacity(0.6)           }            Text('%')             .fontSize(9.33)             .lineHeight(12.83)             .fontWeight(500)             .opacity(0.6)             .position({ x: 104.42, y: 78.17 })         }.margin({ right: 44 })          Stack() {           DataPanel({ values: [50, 12, 8, 5], max: 100, type: DataPanelType.Circle }).width(168).height(168)           Column() {             Text('75').fontSize(35).fontColor('#182431')             Text('已使用98GB/128GB').fontSize(8.17).lineHeight(11.08).fontWeight(500).opacity(0.6)           }            Text('%')             .fontSize(9.33)             .lineHeight(12.83)             .fontWeight(500)             .opacity(0.6)             .position({ x: 104.42, y: 78.17 })         }       }.margin({ bottom: 59 })        DataPanel({ values: this.valueArr, max: 100, type: DataPanelType.Line }).width(300).height(10)     }.width('100%').margin({ top: 5 })   } }

 拓展

我们也可以使用网络上组件库进行图表引用这里我找到了一款比较简单的图表组件库,缺点是目前只有四个类型图表

使用Mc charts

McCharts 已经使用OpenHarmony三方库进行托管,你可以使用OpenHarmony提供的 ohpm 工具安装McCharts

ohpm install @mcui/mccharts

安装完成之后直接在项目当中进行引用即可

折线图

 import { McLineChart, Options } from '@mcui/mccharts'  @Entry @Component struct Index {   @State defOption: Options = new Options({       xAxis:{         data:['周一','周二','周三','周四','周五','周六','周日']       },       yAxis:{         name:'温度'       },       series:[         {           name:'最高气温',           data:[11, 11, 15, 13, 12, 130, 10]         }       ]   })   build() {     Row() {       McLineChart({         options: this.defOption       })     }     .height('50%')   } }

效果:

柱状图

 import { McBarChart, Options } from '@mcui/mccharts'  @Entry @Component struct Index {   @State defOption: Options = new Options({       xAxis:{         data:['周一','周二','周三','周四','周五','周六','周日']       },       yAxis:{         name:'温度'       },       series:[         {           name:'最高气温',           data:[11, 11, 15, 13, 12, 130, 10]         }       ]   })   build() {     Row() {       McBarChart({         options: this.defOption       })     }     .height('50%')   } }

 效果:

 饼图

 import { McPieChart, Options } from '@mcui/mccharts'  @Entry @Component struct Index {   @State defOption: Options = new Options({       series:[         {           data:[             {value:435, name:'直接访问'},             {value:310, name:'邮件营销'},             {value:234, name:'联盟广告'},             {value:135, name:'视频广告'},             {value:1548, name:'搜索引擎'}           ]         }       ]   })   build() {     Row() {       McPieChart({         options: this.defOption       })     }     .height('50%')   } }

效果:

散点图 

import { McPointChart, Options } from '@mcui/mccharts'  @Entry @Component struct Index {   @State defOption: Options = new Options({     series:[       {         name:'高气温',         data: [           {xVal: 40, yVal: 26, num: 17096869, name: '广州'},           {xVal: 20, yVal: 30, num: 17096869, name: '上海'},           {xVal: 30, yVal: 40, num: 17096869, name: '北京'},           {xVal: 10, yVal: 28, num: 17096869, name: '深圳'}         ]       }     ]   })   build() {     Row() {       McPointChart({         options: this.defOption       })     }     .height('50%')   } }

效果:

以上就是全部支持的四种图表以供大家进行参考。

日期选择器组件

DatePicker

子组件

接口

DatePicker(options?: {start?: Date, end?: Date, selected?: Date})

根据指定范围的Date创建可以选择日期的滑动选择器。

参数:

参数名

参数类型

必填

参数描述

start

Date

指定选择器的起始日期。

默认值:Date('1970-1-1')

end

Date

指定选择器的结束日期。

默认值:Date('2100-12-31')

selected

Date

设置选中项的日期。

默认值:当前系统日期

属性

除支持通用属性外,还支持以下属性:

名称

参数类型

描述

lunar

boolean

日期是否显示农历。

- true:展示农历。

- false:不展示农历。

默认值:false

事件

除支持通用事件外,还支持以下事件:

名称

功能描述

onChange(callback: (value: DatePickerResult) => void)

选择日期时触发该事件。

DatePickerResult对象说明

名称

参数类型

描述

year

number

选中日期的年。

month

number

选中日期的月(0~11),0表示1月,11表示12月。

day

number

选中日期的日。

 官方示例:

// xxx.ets @Entry @Component struct DatePickerExample {   @State isLunar: boolean = false   private selectedDate: Date = new Date('2021-08-08')    build() {     Column() {       Button('切换公历农历')         .margin({ top: 30, bottom: 30 })         .onClick(() => {           this.isLunar = !this.isLunar         })       DatePicker({         start: new Date('1970-1-1'),         end: new Date('2100-1-1'),         selected: this.selectedDate       })         .lunar(this.isLunar)         .onChange((value: DatePickerResult) => {           this.selectedDate.setFullYear(value.year, value.month, value.day)           console.info('select current date is: ' + JSON.stringify(value))         })      }.width('100%')   } }

相关内容

热门资讯

8分钟脚本!德普之星app安卓... 8分钟脚本!德普之星app安卓版破解版,菠萝德州透视脚本,2025新版教程(有挂曝光)1、全新机制【...
七分钟教程!wepoker私人... 七分钟教程!wepoker私人局辅助器怎么用,hhpoker到底可以作弊码,线上教程(有挂方案);1...
7分钟教程!wpk辅助是什么,... 7分钟教程!wpk辅助是什么,wpk插件辅助,揭秘攻略(有挂揭秘)1、起透看视 wpk辅助是什么透明...
1分钟脚本!智星德州插件202... 1分钟脚本!智星德州插件2024最新版,wejoker辅助机器人,2025新版(有挂技巧)进入游戏-...
十分钟攻略!wpk俱乐部是真的... 十分钟攻略!wpk俱乐部是真的吗,wpk作弊是真的吗,黑科技教程(有挂分享)1、wpk俱乐部是真的吗...
八分钟方法!wpk透视是真的吗... 八分钟方法!wpk透视是真的吗,wepoker提高好牌率,揭秘教程(有挂介绍);wepoker提高好...
7分钟教程!wepoker作弊... 您好,wepoker正确养号方法这款游戏可以开挂的,确实是有挂的,需要了解加微【487309276】...
7分钟攻略!wepoker有没... 7分钟攻略!wepoker有没有插件,德普之星辅助工具如何打开,AA德州教程(有挂内幕);1、7分钟...
两分钟教学!poker wor... 两分钟教学!poker world辅助,werplan免费挂下载,技巧教程(有挂了解)1、每一步都需...
7分钟教学!aapoker怎么... 7分钟教学!aapoker怎么拿好牌,如何下载德普之星辅助软件,解密教程(有挂分享);在进入如何下载...