还未设置个性签名
成为VIP会员 享9项特权: 开通会员

完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>

3天内不再提示

Ohos-MPChart组件功能描述

OpenAtom OpenHarmony 来源:OpenAtom OpenHarmony 作者:刘政宏 2022-09-23 11:01 次阅读

刘政宏

润和软件高级开发工程师

简介

Ohos-MPChart是OpenAtom OpenHarmony(简称“OpenHarmony”)系统显示各种图表视图的三方组件,用于声明式应用开发,提供了多种多样的图表视图,包括折线图、曲线图、柱形图、饼状图、K线图、雷达图、气泡图。适用于各种统计后的数据以视觉直观的方式呈现。

使用场景

Ohos-MPChart为广大OpenHarmony应用开发者在处理数据时,使数据显示更加直观。尤其现在的大数据时代面对愈加庞大的数据只需要导入Ohos-MPChart三方组件,然后调用相关的接口就能实现各种各样的图表以方便数据汇总。

效果展示

ae40a544-3a7b-11ed-9e49-dac502259ad0.gif

组件功能描述

Ohos-MPChart是一个强大的图表视图,主要提供多种多样的图表视图,包括折线图、曲线图、柱形图、饼状图、K线图等等,具体功能模块如下:

af77168c-3a7b-11ed-9e49-dac502259ad0.jpg

开发环境

安装IDE:支持DevEco Studio 3.0 Release(Build Version 3.0.0.993)版本。安装SDK:支持OpenHarmony API version 8 及以上版本

使用方法

图表一:折线图

b0d26eb4-3a7b-11ed-9e49-dac502259ad0.png

1.下载Ohos-MPChart组件并导入LineChart自定义组件:

//下载mpchart组件  npm install @ohos/mpchart --saveimport{LineChart}from'@ohos/ohos_mpchart'

OpenHarmony npm环境配置等更多内容,请参考安装教程

如何安装OpenHarmony npm包

https://gitee.com/openharmony-tpc/docs/blob/master/OpenHarmony_npm_usage.md

2.初始化数据

aboutToAppear() {    this.lineData = this.initCurveData(45, 100);    this.topAxis.setLabelCount(5, false);    this.topAxis.setPosition(XAxisPosition.TOP);    this.topAxis.setAxisMinimum(0);    this.topAxis.setAxisMaximum(50);    this.bottomAxis.setLabelCount(5, false);this.bottomAxis.setPosition(XAxisPosition.BOTTOM);    this.bottomAxis.setAxisMinimum(0);    this.bottomAxis.setAxisMaximum(50);    this.bottomAxis.setDrawAxisLine(false);    this.bottomAxis.setDrawLabels(false)
    this.leftAxis = new YAxis(AxisDependency.LEFT);    this.leftAxis.setLabelCount(7, false);    this.leftAxis.setPosition(YAxisLabelPosition.OUTSIDE_CHART);    this.leftAxis.setSpaceTop(15);    this.leftAxis.setAxisMinimum(-50);    this.leftAxis.setAxisMaximum(200);    this.leftAxis.enableGridDashedLine(5,5,0)
    this.rightAxis = new YAxis(AxisDependency.RIGHT);    this.rightAxis.setDrawGridLines(false);    this.rightAxis.setLabelCount(7, false);    this.rightAxis.setSpaceTop(11);    this.rightAxis.setAxisMinimum(-50); // this replaces setStartAtZero(true)    this.rightAxis.setAxisMaximum(200);    this.rightAxis.setDrawAxisLine(false);
    var upperLimtLine:LimitLine= new LimitLine(150, "Upper Limit");    upperLimtLine.setLineWidth(4);    upperLimtLine.enableDashedLine(10, 10, 0);    upperLimtLine.setLabelPosition(LimitLabelPosition.RIGHT_TOP);    upperLimtLine.setTextSize(10);
    var lowerLimtLine:LimitLine= new LimitLine(-30, "Lower Limit");    lowerLimtLine.setLineWidth(4);    lowerLimtLine.enableDashedLine(5, 5, 0);    lowerLimtLine.setLabelPosition(LimitLabelPosition.RIGHT_BOTTOM);    lowerLimtLine.setTextSize(10);
    this.leftAxis.setDrawLimitLinesBehindData(true);    this.leftAxis.addLimitLine(upperLimtLine);    this.leftAxis.addLimitLine(lowerLimtLine);  }  private initCurveData(count: number, range: number): LineData {
    let values = new JArrayList();
    for (let i = 0; i < 50; i++) {      let val: number = Math.random() * 180 - 30;      values.add(new EntryOhos(i, val));    }
    let gradientFillColor = new Array();    gradientFillColor.push(['#ffff0000', 0.1])    gradientFillColor.push(['#00ff0000', 1.0])
    let dataSet = new JArrayList();
    let set1 = new LineDataSet(values, "DataSet 1");    set1.setDrawFilled(true);    set1.enableDashedLine(10,5,0)    set1.setMode(Mode.LINEAR);    set1.setGradientFillColor(gradientFillColor)    set1.setColorByColor(Color.Black);    set1.setLineWidth(1)    set1.setDrawCircles(true);    set1.setCircleColor(Color.Black);    set1.setCircleRadius(2);    set1.setCircleHoleRadius(1)    set1.setCircleHoleColor(Color.Green)    set1.setDrawCircleHole(false)    dataSet.add(set1);
    return new LineData(dataSet)}

3.添加数据到自定义曲线图表组件

build() {    Stack({ alignContent: Alignment.TopStart }) {       LineChart({        topAxis: this.topAxis,        bottomAxis: this.bottomAxis,        width: this.width,        height: this.height,        minOffset: this.minOffset,        leftAxis: this.leftAxis,        rightAxis: this.rightAxis,        lineData: this.lineData,      })    }}

图表二:柱状图

b10a56d0-3a7b-11ed-9e49-dac502259ad0.png

1.导入BarChart自定义组件:

import{BarChart,BarChartModel} from '@ohos/ohos_mpchart'

2.初始化数据

@State model:BarChartModel = new BarChartModel();  width: number = 350; //表的宽度  height: number = 500; //表的高度  minOffset: number = 15; //X轴线偏移量  leftAxis: YAxis = null;  rightAxis: YAxis = null;  bottomAxis: XAxis = new XAxis();
  private aboutToAppear(){    this.leftAxis = new YAxis(AxisDependency.LEFT);    this.leftAxis.setLabelCount(6, false);    this.leftAxis.setPosition(YAxisLabelPosition.OUTSIDE_CHART);    this.leftAxis.setSpaceTop(15);    this.leftAxis.setAxisMinimum(0);    this.leftAxis.setAxisMaximum(110);    this.leftAxis.enableGridDashedLine(10,10,0)
    this.rightAxis = new YAxis(AxisDependency.RIGHT);    this.rightAxis.setDrawGridLines(false);    this.rightAxis.setLabelCount(6, false);    this.rightAxis.setSpaceTop(11);    this.rightAxis.setAxisMinimum(0);    this.rightAxis.setAxisMaximum(110);
    this.bottomAxis.setLabelCount(5, false);    this.bottomAxis.setPosition(XAxisPosition.BOTTOM);    this.bottomAxis.setAxisMinimum(0);    this.bottomAxis.setAxisMaximum(10);
    this.setData(this.bottomAxis.getAxisMaximum(),this.leftAxis.getAxisMaximum())
    this.model.width = this.width;    this.model.height = this.height;    this.model.init();    this.model.setDrawBarShadow(false);    this.model.setDrawValueAboveBar(true);    this.model.getDescription().setEnabled(false);    this.model.setMaxVisibleValueCount(60);    this.model.setLeftYAxis(this.leftAxis);    this.model.setRightYAxis(this.rightAxis);    this.model.setXAxis(this.bottomAxis)    this.model.mRenderer.initBuffers();    this.model.prepareMatrixValuePx();  }  private setData(count: number, range: number) {    let groupSpace: number = 0.08;    let barSpace: number = 0.03; // x4 DataSet    let barWidth: number = 0.2; // x4 DataSet    let groupCount: number = count + 1;    let startYear: number = 1980;    let endYear: number = startYear + groupCount;    let values1:JArrayList =     new JArrayList();    let values2:JArrayList =     new JArrayList();    let values3:JArrayList =     new JArrayList();    let values4:JArrayList =     new JArrayList();    let randomMultiplier: number = range;    for (let i = startYear; i < endYear; i++) {      values1.add(new BarEntry(i,       (Math.random() * randomMultiplier)))      values2.add(new BarEntry(i,       (Math.random() * randomMultiplier)))      values3.add(new BarEntry(i,       (Math.random() * randomMultiplier)))      values4.add(new BarEntry(i,       (Math.random() * randomMultiplier)))    }    let set1: BarDataSet,set2:     BarDataSet,set3: BarDataSet,set4: BarDataSet;    if (this.model.getBarData() != null &&    this.model.getBarData().getDataSetCount() > 0) {      set1 = this.model.getBarData().getDataSetByIndex(0) as BarDataSet;      set2 = this.model.getBarData().getDataSetByIndex(1) as BarDataSet;      set3 = this.model.getBarData().getDataSetByIndex(2) as BarDataSet;      set4 = this.model.getBarData().getDataSetByIndex(3) as BarDataSet;      set1.setValues(values1);      set2.setValues(values2);      set3.setValues(values3);      set4.setValues(values4);      this.model.getBarData().notifyDataChanged();      this.model.notifyDataSetChanged();
    } else {      let colors: number[] =       [Color.rgb(104, 241, 175),Color.rgb(164, 228, 251),Color.rgb(242, 247, 158),Color.rgb(255, 102, 0)];      set1 = new BarDataSet(values1, "Company A");      set1.setColorsByArr(colors);      set2 = new BarDataSet(values2, "Company B");      set2.setColorsByArr(colors);      set3 = new BarDataSet(values3, "Company C");      set3.setColorsByArr(colors);      set4 = new BarDataSet(values2, "Company D");      set4.setColorsByArr(colors);
      let dataSets: JArrayList =       new JArrayList();      dataSets.add(set1);      dataSets.add(set2);      dataSets.add(set3);      dataSets.add(set4);
      let data: BarData = new BarData(dataSets);      this.model.setData(data);    }    this.model.getBarData().setBarWidth(barWidth);    this.bottomAxis.setAxisMinimum(startYear);    this.bottomAxis.setAxisMaximum(startYear + this.model.getBarData().getGroupWidth(groupSpace, barSpace) * groupCount);    this.model.groupBars(startYear, groupSpace, barSpace);}

3.添加数据到自定义曲线图表组件

build() {    Stack(){      BarChart({model:this.model})    }}

图表三:饼状图

b129d320-3a7b-11ed-9e49-dac502259ad0.png

1.导入PieChart自定义组件:

import { PieChart } from '@ohos/ohos_mpchart'

2.初始化数据

pieData: PieData = null;  @State pieModel: PieChart.Model = new PieChart.Model()  @State @Watch("seekBarXValueWatch")   seekBarX: SeekBar.Model = new SeekBar.Model()  @State @Watch("seekBarYValueWatch")   seekBarY: SeekBar.Model = new SeekBar.Model()  parties: string[] = [    "Party A", "Party B", "Party C", "Party D", "Party E", "Party F", "Party G", "Party H",    "Party I", "Party J", "Party K", "Party L", "Party M", "Party N", "Party O", "Party P",    "Party Q", "Party R", "Party S", "Party T", "Party U", "Party V", "Party W", "Party X",    "Party Y", "Party Z"]
  private aboutToAppear(): void {    this.pieData = this.initPieData(4, 10);    this.pieModel      .setPieData(this.pieData)      .setRadius(150)      .setHoleRadius(0.5)      .setOffset(new MPPointF(160,200))   // vp  }  private initPieData(count: number,   range: number): PieData{    let entries = new JArrayList();    for (var i = 0; i < count; i++) {      entries.add(new PieEntry(((Math.random() * range) + range / 5), this.parties[i % this.parties.length]))    }    //        entries.add(new PieEntry(4,'Party A'))    //        entries.add(new PieEntry(2,'Party B'))    //        entries.add(new PieEntry(5,'Party C'))    //        entries.add(new PieEntry(3,'Party D'))
    let dataSet: PieDataSet = new PieDataSet(entries,     "Election Results");    dataSet.setDrawIcons(false);    dataSet.setSliceSpace(3);    dataSet.setIconsOffset(new MPPointF(0, 40));    dataSet.setSelectionShift(5);
    // add a lot of colors    let colors: JArrayList = new JArrayList();    for (let index = 0;     index < ColorTemplate.VORDIPLOM_COLORS.length; index++) {      colors.add(ColorTemplate.VORDIPLOM_COLORS[index]);    }
    for (let index = 0;     index < ColorTemplate.JOYFUL_COLORS.length; index++) {      colors.add(ColorTemplate.JOYFUL_COLORS[index]);    }
    for (let index = 0;     index < ColorTemplate.COLORFUL_COLORS.length; index++) {      colors.add(ColorTemplate.COLORFUL_COLORS[index]);    }    for (let index = 0;     index < ColorTemplate.LIBERTY_COLORS.length; index++) {      colors.add(ColorTemplate.LIBERTY_COLORS[index]);    }    for (let index = 0;     index < ColorTemplate.PASTEL_COLORS.length; index++) {      colors.add(ColorTemplate.PASTEL_COLORS[index]);    }    colors.add(ColorTemplate.getHoloBlue());    dataSet.setColorsByList(colors);    return new PieData(dataSet)}

3.添加数据到自定义曲线图表组件

build() {    Column() {      PieChart({        model: this.pieModel      })  }

图表四:雷达图

b189e45e-3a7b-11ed-9e49-dac502259ad0.png

1.导入RadarChart自定义组件:

import{RadarChart}from'@ohos/ohos_mpchart';

2.初始化数据

width: number = 300; //表的宽度  height: number = 300 //表的高度  minOffset: number = 5; //X轴线偏移量  xAxis: XAxis = new XAxis(); //顶部X轴  yAxis: YAxis = new YAxis();  data:RadarData= new RadarData();  @State  radarChartMode:RadarChartMode=new RadarChartMode();public aboutToAppear() {    this.model.menuItemArr = this.menuItemArr    this.model.title = this.title
    this.data=this.initRadarData( 5,50)    this.xAxis.setTextSize(9);    this.xAxis.setYOffset(0);    this.xAxis.setXOffset(0);    this.xAxis.setTextColor(Color.White);    const mActivities:string[] = ["Burger", "Steak", "Salad", "Pasta", "Pizza"];    this.xAxis.setValueFormatter(new     class RadarAxisValueFormatter     implements IAxisValueFormatter{      public  getFormattedValue( value:number,        axisstring {        return mActivities[value % mActivities.length];      }    });    this.xAxis.longest=mActivities[0];    this.yAxis.setLabelCount(5, false);    this.yAxis.setTextSize(9);    this.yAxis.setAxisMinimum(0);    this.yAxis.setAxisMaximum(80);    this.yAxis.setDrawLabels(false);
    this.radarChartMode.mRotateEnabled=false    this.radarChartMode.setYExtraOffset(this.model.height)    this.radarChartMode.setXAxis(this.xAxis)    this.radarChartMode.setYAxis(this.yAxis)    this.radarChartMode.setWidth(this.width)    this.radarChartMode.setHeight(this.height)    this.radarChartMode.setMinOffset(this.minOffset)    this.radarChartMode.setData(this.data)    this.radarChartMode.setPaddingLeft(30)    this.radarChartMode.setPaddingTop(100)    this.radarChartMode.init();    //this.animate('Animate XY')  }
  private initRadarData(count: number,   range: number): RadarData {    let mul:number = 80;    let min:number = 20;    let cnt:number = 5;    let entries1 = new JArrayList ();    let entries2 = new JArrayList ();
    // NOTE: The order of the entries when being added to the entries array determines their position around the center of    // the chart.    for (let i = 0; i < cnt; i++) {      let val1:number = Math.random() * mul + min;      entries1.add(new RadarEntry(val1));
      let val2:number = Math.random() * mul + min;      entries2.add(new RadarEntry(val2));    }    let set1:RadarDataSet = new RadarDataSet(entries1,     "Last Week");    set1.setColorByColor(0xb4676e81);    set1.setFillColor(0xb4676e81);    set1.setDrawFilled(true);    set1.setFillAlpha(180);    set1.setLineWidth(2);    set1.setDrawHighlightCircleEnabled(true);    set1.setDrawHighlightIndicators(false);    set1.setHighlightCircleStrokeColor(0xffffffff);    set1.setHighlightCircleFillColor(0xb4676e81)    set1.setDrawValues(true)    set1.setIconsOffset(new MPPointF(0, px2vp(0)));
    let set2:RadarDataSet = new RadarDataSet(entries2, "This Week");    set2.setColorByColor(0xb479a2af);    set2.setFillColor(0xb479a2af);    set2.setDrawFilled(true);    set2.setFillAlpha(180);    set2.setLineWidth(2);    set2.setDrawHighlightCircleEnabled(true);    set2.setDrawHighlightIndicators(false);    set2.setHighlightCircleStrokeColor(0xffffffff);    set2.setHighlightCircleFillColor(0xb479a2af)    set2.setDrawValues(true)    set2.setIconsOffset(new MPPointF(0, px2vp(0)));
    let sets = new JArrayList();    sets.add(set1);    sets.add(set2);    //    let data:RadarData = new RadarData(sets);    data.setValueTextSize(8);    data.setDrawValues(this.isDrawValuesEnable);    data.setValueTextColor(Color.White);    return data  }  public getFormattedValue(value: number): string {    var str = String(value.toFixed(1)).split(".");    if(str[1] == "0"){      return str[0];    }else{      return String(value.toFixed(1))    }}

3.添加数据到自定义曲线图表组件

build() {    Column() {      Stack({ alignContent: Alignment.TopStart }) {        RadarChart({          radarChartMode:this.radarChartMode,        })      }    }}

其他图表使用方式与以上图表使用方法基本一致

b1b39146-3a7b-11ed-9e49-dac502259ad0.png

b1e48ec2-3a7b-11ed-9e49-dac502259ad0.png

b223952c-3a7b-11ed-9e49-dac502259ad0.png

b2479026-3a7b-11ed-9e49-dac502259ad0.png

b2712f80-3a7b-11ed-9e49-dac502259ad0.png

b29a53e2-3a7b-11ed-9e49-dac502259ad0.png

b2bd0aea-3a7b-11ed-9e49-dac502259ad0.png

b2dc3a1e-3a7b-11ed-9e49-dac502259ad0.png


审核编辑:汤梓红


  • OpenHarmony
    +关注

    关注

    8

    文章

    1217

    浏览量

    10550
收藏 人收藏

    评论

    相关推荐

    【开鸿智谷NiobeU4开发板免费试用体验】使用wifi获取实时天气数据

    前言 上一篇帖子已经完成了多线程操作和LCD的基本驱动,本篇在上一篇的工程基础上加上wifi功能,实现实时天气的获取。 新建...
    发表于 10-02 18:37 1917次 阅读

    【开鸿智谷NiobeU4开发板免费试用体验】多线程与LCD显示

    前言 开鸿智谷开发板NiobeU4板载了一块spi接口的显示屏,分辨率为130*135,用来显示一些关键的信息也是非常不错的。本篇利用这...
    发表于 10-01 16:45 5178次 阅读

    基于OpenHarmony3.1的LittleFS文件系统hdf驱动实现

    原“HarmonyOS官方合作社区”更名为“电子发烧友开源社区”,更名后 OpenHarmony 依....
    的头像 电子发烧友开源社区 发表于 09-30 18:32 130次 阅读

    OpenHarmony适配移植:X86、ARM、RISC-V、MIPS、LoongArch芯片架构简析

    一、前言 基于OpenHarmony的开发相关工作,特别适配移植、设备开发这块,芯片的基础构架知识,是最初的学习起点。本文我们整理...
    发表于 09-30 17:46 4236次 阅读

    Ohos-MPChart——支持多种图表绘制的组件

    Ohos-MPChart——支持多种图表绘制的组件 简介 Ohos-MPChart是OpenAtom OpenHarmony(简称“OpenHarmony”)系统...
    发表于 09-30 14:40 1046次 阅读

    PCS和XTS套件设计支撑各行业产品差异化生态兼容性测试

    基于《金融数字化服务终端产品兼容性规范》和扩展XTS测试套件,兼容性工作组联合银联、国金测评共同设计....
    的头像 OpenAtom OpenHarmony 发表于 09-30 10:16 280次 阅读

    《沉浸式剖析OpenHarmony源代码》开放100页样章

    《沉浸式剖析OpenHarmony源代码》开放100页样章梁开祝  2022.09.29[quote]这本书正在排版印刷中,不出意外的话,在1...
    发表于 09-29 11:33 5387次 阅读
    《沉浸式剖析OpenHarmony源代码》开放100页样章

    刘潇翔:基于OpenHarmony的仿生四足狗开发分享

    刘潇翔:基于OpenHarmony的仿生四足狗开发分享 说起人工智能机器人界的网红,那就不得不提到——“机器狗”。此前,著名机器人...
    发表于 09-29 11:11 3737次 阅读

    如何使用属性动画实现简单属性变化的动画效果

    设置定时器定时查询当前是否挥拳,若检测到挥拳再通过计算当前动画运行时间来判断“击拳方块”位置,从而执....
    的头像 OpenAtom OpenHarmony 发表于 09-29 09:44 85次 阅读

    #DAYU200#Ability入门

    Ability入门 Ability在英文中是能力的意思,在这里是指应用所具备能力的抽象,同时是应用程序的重要组成部分。一个应用可以包...
    发表于 09-28 15:03 4231次 阅读

    本周四晚19:00知识赋能第八期第3课丨涂鸦小游戏的实现

    本周四晚19:00知识赋能第八期第3课丨涂鸦小游戏的实现 9月29日19:00~20:00,第八期知识赋能最后一节直播就要开始啦!本次直播...
    发表于 09-28 11:56 573次 阅读

    OpenHarmony产教融合协同育人项目正式启动

    9月20日下午,由湖南省教育厅、湖南省工业和信息化厅指导,长沙民政职业技术学院主办,拓维信息系统股份....
    的头像 OpenAtom OpenHarmony 发表于 09-28 11:40 350次 阅读

    优博终端基于RK3568工控开发板通过OpenHarmony兼容性测评

    本次通过兼容性测试RK3568工控开发板,搭载OpenHarmony标准系统,支持4K.H.264\....
    的头像 发烧友实验室 发表于 09-27 14:43 106次 阅读
    优博终端基于RK3568工控开发板通过OpenHarmony兼容性测评

    优博终端基于RK3568工控开发板通过OpenHarmony兼容性测评

    近日,优博终端RK3568工控开发板顺利通过OpenAtom OpenHarmony(以下简称“OpenHarmony”)3.1 Release版本兼容性测评,...
    发表于 09-27 14:13 552次 阅读

    深开鸿KHDVK-3566B开发板正式合入OpenHarmony主干

    近日,由深圳开鸿数字产业发展有限公司(以下简称“深开鸿”)推出的KHDVK-3566B开发板正式合入OpenAtom OpenHarmony(...
    发表于 09-27 14:12 679次 阅读

    润和软件与龙芯中科合作为OpenHarmony+LoongArch相关行业赋能

    日前,在江苏润和软件股份有限公司(以下简称“润和软件”)、龙芯中科股份有限公司(以下简称“龙芯中科”....
    的头像 润和软件 发表于 09-27 10:58 213次 阅读

    优博终端RK3568工控开发板获颁OpenHarmony生态产品兼容性证书

    近日,优博终端RK3568工控开发板顺利通过OpenAtom OpenHarmony(以下简称“Op....
    的头像 OpenAtom OpenHarmony 发表于 09-27 09:50 334次 阅读

    OpenHarmony系统的拓维Niobe开发套件开发的智能阳台项目过程

    本文由OpenAtom OpenHarmony(以下简称“OpenHarmony”)开源开发者成长计....
    的头像 OpenAtom OpenHarmony 发表于 09-26 11:24 335次 阅读

    深开鸿KHDVK-3566B不断丰富OpenHarmony生态体系

    近日,由深圳开鸿数字产业发展有限公司(以下简称“深开鸿”)推出的KHDVK-3566B开发板正式合入....
    的头像 OpenAtom OpenHarmony 发表于 09-23 11:11 132次 阅读

    Ohos-MPChart如何实现各种各样的图表

    Ohos-MPChart是OpenAtom OpenHarmony(简称“OpenHarmony”)....
    的头像 OpenAtom OpenHarmony 发表于 09-23 11:08 104次 阅读

    OpenHarmony产教融合协同育人项目正式启动

    湖南省政协常委、省教育厅副厅长王仁祥,湖南省工业和信息化厅党组成员、副厅长彭涛,长沙民政职业技术学院....
    的头像 拓维信息 发表于 09-22 10:27 645次 阅读

    三方库移植OpenHarmony过程

    战码先锋,PR征集令(以下简称“战码先锋”)第二期正如火如荼地进行中,涉及OpenAtom Open....
    的头像 OpenAtom OpenHarmony 发表于 09-22 10:11 349次 阅读

    致远开发板合入主干后会对OpenHarmony有哪些积极作用

    大家好,我是鸿湖万联的高级技术专家李星。作为鸿湖万联南向芯片适配的“排头兵”,我主要负责整个南向团队....
    的头像 OpenAtom OpenHarmony 发表于 09-22 10:08 183次 阅读

    深开鸿首次开发板合入OpenHarmony社区主干

    深开鸿KHDVK-3566B 是基于 OpenHarmony 内嵌KaihongOS的智慧屏开发板,....
    的头像 深开鸿 发表于 09-21 11:14 184次 阅读

    基于OpenHarmony使用HI3861实现血压、心率、血氧的检测

    http请求作用:将要获取的内容以http协议的格式发送给服务端,服务端根据格式进行解析获取到其真实....
    的头像 电子发烧友论坛 发表于 09-21 10:34 191次 阅读

    如何通过Canvas组件实现涂鸦功能

    新增的功能可以帮助开发者开发出更流畅、更美观的应用。本篇文章将为大家分享如何通过Canvas组件实现....
    的头像 OpenAtom OpenHarmony 发表于 09-20 16:31 206次 阅读

    基于OpenHarmony开发样例的步骤

    单丝不成线,独木不成林,一个社区想要健康蓬勃发展离不开社区参与者的持续贡献。而社区贡献点有很多种,本....
    的头像 OpenAtom OpenHarmony 发表于 09-20 10:30 93次 阅读

    基于OpenHarmony成长计划的智能电饭煲开发过程

    我们团队参与到OpenAtom OpenHarmony(简称“OpenHarmony”)成长计划的智....
    的头像 OpenAtom OpenHarmony 发表于 09-20 10:28 99次 阅读

    OpenHarmony 3.2 Beta多媒体子系统的媒体库模块

    OpenAtom OpenHarmony(以下简称“OpenHarmony”)MediaLibrar....
    的头像 深开鸿 发表于 09-16 09:50 436次 阅读

    【OpenHarmony专题】小河狸创客格物开发板免费试用

      扫描图片二维码立即参与试用     开发板介绍   一、试用产品概述 格物板介绍: 1、第一块通....
    的头像 发烧友研习社 发表于 09-15 11:56 124次 阅读

    润和软件开启基于OpenHarmony的保险开源操作系统联合实验室项目合作

    近日,江苏润和软件股份有限公司(以下简称“润和软件”)与北京太极华保科技股份有限公司(以下简称“太极....
    的头像 润和软件 发表于 09-14 15:52 170次 阅读

    拓维信息获评“卓越影响力技术团队”

    9月,51 CTO 开源基础软件社区创建两周年。拓维信息凭借在社区以及开源生态中的突出贡献,荣获社区....
    的头像 拓维信息 发表于 09-13 17:09 331次 阅读

    上海交通大学OpenHarmony技术俱乐部正式成立

    9月9日,由OpenAtom OpenHarmony(以下简称“OpenHarmony”)技术指导委....
    的头像 OpenAtom OpenHarmony 发表于 09-09 17:19 372次 阅读

    鸿湖万联启鸿开发板成功通过OpenHarmony3.0 LTS版本兼容性测评

    近日,软通动力集团旗下子公司鸿湖万联启鸿开发板成功通过了OpenAtom OpenHarmony(简....
    的头像 OpenAtom OpenHarmony 发表于 09-09 10:13 316次 阅读

    OpenHarmony PhotoView组件的介绍

    PhotoView是OpenAtom OpenHarmony(简称“OpenHarmony”)系统的....
    的头像 OpenAtom OpenHarmony 发表于 09-09 10:04 128次 阅读

    DevEco Testing注入攻击测试的背后原理

    为守护OpenHarmony终端安全,HUAWEI DevEco Testing安全测试团队带来了成....
    的头像 OpenAtom OpenHarmony 发表于 09-08 10:16 200次 阅读

    基于OpenHarmony系统开发的智能电子牌Demo应用

    智能电子牌Demo是基于OpenHarmony系统开发的应用,其中主要由日程信息获取模块、实时天气模....
    的头像 OpenAtom OpenHarmony 发表于 09-07 10:05 930次 阅读

    软通动力子公司鸿湖万联携手龙芯中科深化全方位合作

    9月2日,2022年龙芯工业生态大会在苏州召开,软通动力子公司鸿湖万联受邀出席本次峰会。本次大会以“....
    的头像 软通动力 发表于 09-06 10:56 176次 阅读

    什么样的PR更容易被合入

    战“码”先锋,PR征集令(以下简称“战码先锋”)第二期正如火如荼地进行中,涉及OpenAtom Op....
    的头像 OpenAtom OpenHarmony 发表于 09-06 09:42 168次 阅读

    OpenHarmony LiteOS-M内核的数据结构

    OpenAtom OpenHarmony(以下简称“OpenHarmony”)是由开放原子开源基金会....
    发表于 09-05 11:01 3449次 阅读

    国产操作系统迈向新台阶!2022岳麓峰会见证“在鸿”品牌发布

    万物互联,不是1+1,也不是1+10000,而是10000^10000,是一场智能设备的指数级增长。....
    的头像 科技见闻网 发表于 09-02 17:41 243次 阅读
    国产操作系统迈向新台阶!2022岳麓峰会见证“在鸿”品牌发布

    拓维信息旗下开鸿智谷发布基于OpenHarmony的“在鸿”系列产品

    万物互联,不是1+1,也不是1+10000,而是10000^10000,是一场智能设备的指数级增长。....
    的头像 拓维信息 发表于 09-02 10:46 514次 阅读

    打造应用新标杆,鸿湖万联SwanLinkOS首款产品落地无锡

    近日,由软通动力旗下子公司鸿湖万联(江苏)科技发展有限公司(以下简称“鸿湖万联”)研发的基于Swan....
    的头像 科讯视点 发表于 09-02 10:26 501次 阅读
    打造应用新标杆,鸿湖万联SwanLinkOS首款产品落地无锡

    OpenHarmony Camera源码工作的整个流程

    当前,开源在科技进步和产业发展中发挥着越来越重要的作用,OpenAtom OpenHarmony(简....
    的头像 OpenAtom OpenHarmony 发表于 09-02 10:05 151次 阅读

    拓维信息面向OpenHarmony生态战略 共建自主创新国产基础软件生态

    8月31日,2022互联网岳麓峰会将于长沙盛大开幕。本届岳麓峰会上,拓维信息将联合湘江实验室、华为共....
    的头像 拓维信息 发表于 08-31 11:18 323次 阅读

    润和软件与博通集成合力助推OpenHarmony行业发展

    近日,江苏润和软件股份有限公司(以下简称“润和软件”)与博通集成电路(上海)股份有限公司(以下简称“....
    的头像 润和软件 发表于 08-31 10:34 381次 阅读

    深开鸿和升腾携手打造云音箱设备 助推千行百业数字化、智慧化升级

    近日,由福建升腾资讯有限公司(以下简称“升腾”)进行终端适配集成,搭载深圳开鸿数字产业发展有限公司(....
    发表于 08-31 10:29 157次 阅读

    OpenHarmony关键技术演进及生态进展

    作为全国互联网行业的一张亮丽名片,第九届互联网岳麓峰会随秋而至。8月30日至9月1日,2022互联网....
    的头像 OpenAtom OpenHarmony 发表于 08-31 10:26 415次 阅读

    ArkUI如何自定义弹窗(eTS)

    自定义弹窗其实也是比较简单的,通过CustomDialogController类就可以显示自定义弹窗....
    的头像 鸿蒙实验室 发表于 08-31 08:24 228次 阅读

    OpenHarmony像素单位

    ArkUI开发框架提供了 4 种像素单位供开发者使用,分别是: px 、 vp 、 fp 和 lpx....
    的头像 鸿蒙实验室 发表于 08-31 08:23 152次 阅读
    OpenHarmony像素单位

    中软国际加速打造“平台+服务”数字化全程服务

    2022年上半年,公司业绩逆势增长,收入达到100.25亿,同比增长20.2%,云智能业务收入32.....
    的头像 中软国际 发表于 08-30 09:39 384次 阅读

    中软国际2022年上半年收入达到100.25亿

    2022年上半年,公司业绩逆势增长,收入达到100.25亿,同比增长20.2%,云智能业务收入32.....
    的头像 中软国际 发表于 08-30 09:37 391次 阅读

    OpenHarmony中软件模块的单链表实现

    为了性能考虑,嵌入式系统一般使用C语言进行开发,由于C语言标准库没有封装链表,所以嵌入式系统一般自己....
    发表于 08-30 09:25 70次 阅读

    eTS的Text组件设置文本垂直排列的两种方式

    字体大小和宽度一致即可,保证每行只能容纳一个字体,不用设置高度。
    的头像 鸿蒙实验室 发表于 08-29 17:28 347次 阅读
    eTS的Text组件设置文本垂直排列的两种方式

    OpenHarmony常见的几种权限

    今天给大家说一下OpenHarmony常见的几种权限
    的头像 鸿蒙实验室 发表于 08-29 17:27 228次 阅读

    深开鸿乔迁新址 加速OpenHarmony新征程

    2022年8月26日,深圳开鸿数字产业发展有限公司(以下简称“深开鸿”)在成立一周年之际,乔迁至深圳....
    的头像 深开鸿 发表于 08-27 09:14 479次 阅读

    鸿元智通ZhihongmetaOS V1.0软件发行版获颁OpenHarmony生态产品兼容性证书

    近日,深圳鸿元智通科技有限公司(下称鸿元智通)的ZhihongmetaOS V1.0软件发行版顺利通....
    的头像 OpenAtom OpenHarmony 发表于 08-27 09:12 183次 阅读

    OpenHarmony的应用以及HDF驱动开发

    如图是开发板GPIO输出到红外发射器的波形和空调遥控器输出波形的对比,可以看到波形的变化规律基本一致....
    发表于 08-27 09:10 161次 阅读

    openharmony加入指南 openharmony萌新贡献指南

    openharmony萌新贡献指南   本篇教程旨在帮助萌新们一起参与到OpenHarmony的开源....
    的头像 鸿蒙实验室 发表于 08-26 11:03 264次 阅读
    openharmony加入指南 openharmony萌新贡献指南

    如何在OpenHarmony开源代码基础上实现数字管家开发宿舍全屋智能

    基于OpenAtom OpenHarmony(以下简称“OpenHarmony”)、数字管家开发宿舍....
    的头像 OpenAtom OpenHarmony 发表于 08-26 09:55 201次 阅读