Android MPAndroidChart超漂亮图表框架

    • 简介
    • 配置
    • 示例
    • 总结

Blog如有不对,敬请斧正喜欢Android的可以关注我,日常更新Android干货

简介

MPAndroidChart是GitHub中大名鼎鼎的一个开源框架,可以快速制作开发中需要的图表,如:折线图、柱形图、饼图、雷达图。

Github项目地址:https://github.com/PhilJay/MPAndroidChart

API开发文档:https://javadoc.jitpack.io/com/github/PhilJay/MPAndroidChart/v3.1.0/javadoc/

简单列举一些,大家感受一下它的强大

BarChart 条形图
Bubble Chart 气泡图
CandleStick Chart 烛台图
CombinedChart 组合图
HorizontalBarChart 水平条形图
LineChart 折线图
PieChart 饼图


配置

只需2步
1、

 implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0'  repositories {         maven {      url 'https://jitpack.io' }}

2、

 maven {      url "https://jitpack.io" }

记得点击 Sync Now
记得点击 Sync Now
记得点击 Sync Now

示例

我这里用折线图、条形图、雷达图,来给大家演示一下。

1、 activity_main.xml

要点:

在Layout中通常使用

com.github.mikephil.charting.charts.xxxx

引入组件。

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    tools:context=".MainActivity"    android:orientation="vertical"    >        <com.github.mikephil.charting.charts.LineChart            android:layout_marginTop="10dp"            android:id="@+id/lc_1"            android:layout_width="match_parent"            android:layout_height="200dp" />        <com.github.mikephil.charting.charts.BarChart            android:layout_marginTop="10dp"            android:id="@+id/bc_1"            android:layout_width="match_parent"            android:layout_height="200dp" />        <com.github.mikephil.charting.charts.RadarChart            android:layout_marginTop="10dp"            android:id="@+id/rc_1"            android:layout_width="match_parent"            android:layout_height="250dp" /></LinearLayout>

2、 MainActivity
要点:

1、利用 ArrayList< Entry >()添加数据 ,Entry()是MPAndroidChart定义好的类,通过 Entry(x,y),增加X轴和Y轴的数据,Entry可能会改变,如条形图的就是对应的是BarEntry

2、利用ArrayList()创建
new xxxDataSet(list,"radar"),拿折线图来说,第二个参数是这条折线的’名称’,一个xxxDataSet 就代表一条折线。

3、xxxData data= new xxxData() 的addDataSet(set) 方法将上面的数据添加,添加两个xxxDataSet就有两条折线了。

4、利用创建组件的 setData(data)添加数据,显示数据

 ArrayList< Entry >()----> new xxxDataSet(list,"radar")----> xxxData data= new xxxData()---->组件.setData()

MainActivity

package com.example.xianyu;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;import com.github.mikephil.charting.data.BarData;import com.github.mikephil.charting.data.BarDataSet;import com.github.mikephil.charting.data.BarEntry;import com.github.mikephil.charting.data.Entry;import com.github.mikephil.charting.data.LineData;import com.github.mikephil.charting.data.LineDataSet;import com.github.mikephil.charting.data.RadarData;import com.github.mikephil.charting.data.RadarDataSet;import com.github.mikephil.charting.data.RadarEntry;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity {         com.github.mikephil.charting.charts.LineChart mylineChart;    com.github.mikephil.charting.charts.BarChart mybarchart;    com.github.mikephil.charting.charts.RadarChart myradarchart;    @Override    protected void onCreate(Bundle savedInstanceState) {             super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initLineChart();        initBarChart();        initRadarChart();    }    private void initRadarChart() {             myradarchart = findViewById(R.id.rc_1);        List<RadarEntry> list = new ArrayList<RadarEntry>();        RadarEntry da1 = new RadarEntry(0);        RadarEntry da2 = new RadarEntry(5);        RadarEntry da3 = new RadarEntry(10);        RadarEntry da4 = new RadarEntry(15);        RadarEntry da5 = new RadarEntry(20);        list.add(da1);        list.add(da2);        list.add(da3);        list.add(da4);        list.add(da5);        RadarData radarData = new RadarData();        RadarDataSet radarDataSet = new RadarDataSet(list,"radar");        radarData.addDataSet(radarDataSet);        myradarchart.setData(radarData);    }    public void initLineChart(){             mylineChart = findViewById(R.id.lc_1);        List<Entry> entry = new ArrayList<Entry>();        Entry c1e1 = new Entry(10, 0);        Entry c1e2 = new Entry(20, 5);        Entry c1e3 = new Entry(30, 10);        Entry c1e4 = new Entry(40, 15);        entry.add(c1e1);        entry.add(c1e2);        entry.add(c1e3);        entry.add(c1e4);       LineDataSet  data = new  LineDataSet(entry,"linechart");       LineData lineData = new LineData(data);       mylineChart.setData(lineData);    }   public void initBarChart(){          mybarchart = findViewById(R.id.bc_1);        List<BarEntry> list = new ArrayList<BarEntry>();        BarEntry da1 = new BarEntry(0,5);       BarEntry da2 = new BarEntry(5,6);       BarEntry da3 = new BarEntry(10,10);       BarEntry da4 = new BarEntry(15,12);       BarEntry da5 = new BarEntry(20,15);        list.add(da1);       list.add(da2);       list.add(da3);       list.add(da4);       list.add(da5);           BarData data= new BarData();       BarDataSet set = new BarDataSet(list,"barchar");       data.addDataSet(set);       data.addDataSet(set);       mybarchart.setData(data);   }    }

实现图:

现在做出来的效果使用的是默认的图表样式,如需开发自定义,更灵活,还需要学习api文档中components 包,它包含了X轴、Y轴、基线等类的get和set方法,方便快速设置X、Y轴样式。

总结

非常好用,快学起来叭!

更多相关文章

  1. mybatisplus的坑 insert标签insert into select无参数问题的解决
  2. python起点网月票榜字体反爬案例
  3. Android————一个简单记账本(Bookkeeping)
  4. android之ContentResolver与ContentProvider
  5. Android应用程序的Java数据更新和UI同步改变
  6. android TextView添加滚动条
  7. Eclipse上基于Android(安卓)SDK的开发
  8. Android(安卓)常用控件讲解
  9. Android(安卓)复习 Content Provider

随机推荐

  1. Android中RemoteViews的实现
  2. Android
  3. android中的横竖屏控制
  4. Android中gravity与layout_gravity的区别
  5. Android设置颜色的几种方法
  6. Android(安卓)文件读写最全解析
  7. android:layout_gravity和android:gravit
  8. 【Android常用控件】EditText常用属性【
  9. Android数据加密之Rsa加密
  10. Android——IPC机制(一)