2023年7月13日发(作者:)
MPAndroidChart的LineChart(折线图)的个⼈学习经验 本⼈学习MPAndroidChart的经历可以说⼗分坎坷,对于没有什么经验的⼩⽩来说,真的不好⼊⼿,但总的来说其实也不是很难。让我们来略微了解⼀下LineChart(折线图)的基本⽅法吧!⾸先第⼀步要使⽤MPAndroidChart这个Android图标库需要导⼊:两种⽅式:1.导⼊架包2.添加依赖依赖导⼊repositories { maven { url '' }}dependencies { implementation 'y:MPAndroidChart:v3.1.0'}然后我们就开始创建UI布局啦!第⼆步先创建⼀个的布局⽂件具体代码
但是也有⼀定的约束,要发挥它的作⽤ 实现图表库的作⽤实现数据可视化,⽅便⽤户直观的获取数据。第三步 创建⼀个⽂件public class LineChartActiviy extends AppCompatActivity { public LineChart lineChart; @Override protected void onCreate(Bundle savedInstanceState) { te(savedInstanceState); setContentView(artdemo); lineChart = (LineChart)findViewById(art_with); }}
初始化代码初始化⼀个LineChart对象
找到布局⽂件,找到对应的id,就可以很快乐的对他进⾏操作啦!第四步我们来思考⼀下⼀个折线图有啥 ? 数据 ,折线,座标轴,描述差不过了我们先说单条折线。第五步我们存数据数据我们⽤List来存储折线图的数据我们来说⼀下这个折线图的数据 Entry类型的 作⽤就是来存储折线图数据public Entry(float x, float y) { super(y); this.x = x;}
第⼀个参数 float x,是折线图中数据值的位置索引第⼆个参数float y,是具体数据值我们主要传⼊数据的⽤法创建⼀个List
先看我们需要传⼊两个参数 ⼀个列表,⼀个String 的Label,列表我们已经创建好了,就是mList,Label我们可以理解为这条折线的名字再看定义的⼀个List
⽤到的都在这⾥啦!其他的可以⾃⼰去拓展第七步管理数据集初始化⼀个LineData对象,LineData data = new LineData(set);然后我们呢看源码public class LineData extends BarLineScatterCandleBubbleData
就这么⼀点没得看哦!但是都是精华哦!⾸先我们看有三个构造⽅法分别传⽆参构造,ILineDataSet对象和List
很显然就是把我们设置好的LineDataSet对象给传进去,但是List
我们初级⼀般⽤到的就这三个就够了其实我们不去设置默认都ok,有需要的再去设置⾃⼰需要的效果第⼋步 XY轴⼀个坐标轴可是图表的框架但是这个框架根据需求,美观性可以选择性的调⽤和设置我们知道⼀般是两个轴X轴和Y轴但是再MPAndroidChart中可不⽌,Y轴就有两个在左边的Y轴我们给他起名(leftYAxis),右边的就是(rightYAxis)X轴就⼀个但是位置可以设置 ,上下都可以定义XAxis xAxis = is();//初始化X轴YAxis leftyAxis =sLeft();//初始化左边Y轴YAxis rightyAxis = sRight();//初始化右边Y轴bled(true);//是否调⽤x轴ition();//设置X轴的位置elCount(5);//设置x轴标签的数⽬tSize(20f);//设置标签的字体⼤⼩tColor();//设置标签字体的颜⾊wAxisLine(false);//是否绘制x轴的直线wGridLines(false);//是否画⽹格线elCount(7);//设置X轴的标签数量//sMaximum(10f);//设置X轴标签最⼤值//sMinimum(0f);//设置X轴标签最⼩值
XY轴设置都是互通的,当然⽅法也不⽌折线,⽬前⽤到的就是这些,重点来了⾃定义坐标轴标签为什么要⾃定义坐标轴标签?⽬的是为了满⾜需求,默认的是0,1,2...很low我们定义为星期吧七天public static final String[] week = {"周⼀","周⼆","周三","周五","周六","周⽇"};7个标签怎么操作呢??有个⽅法⾃定义X轴的标签显⽰ueFormatter(valueFormatter);看源码public void setValueFormatter(ValueFormatter f) { if (f == null) mAxisValueFormatter = new DefaultAxisValueFormatter(mDecimals); else mAxisValueFormatter = f;}简单说就是你给的参数是ValueFormatter类型的,为null的时候就给你新建⼀个⾃带的,不为null就是传的参数那我们就创建这个CalueFormatter类型ValueFormatter valueFormatter = new ValueFormatter() { @Override public String getFormattedValue(float value) { return ""+week[(int)value]; }};
根据参数value来取出List中对应的数据value⼀定要强转成(int)类型,我们取得是索引;返回值是String,我们就⽤""+来实现String到这⾥我们的任务只差最后⼀步实现图表a(data);//在UI中绘制图表看源码public void setData(T data) { mData = data; mOffsetsCalculated = false; if (data == null) { return; }}
就是绘制图表如果传⼊的值为null就什么都没有简简单单⼀⾏,却需要我们给他准备这么多,你的成功可能在旁⼈只能看到最后⼀步,可对你来说却⼤量的准备最后⽔到成⽔渠的成功。第⼀次写博客,分享学习的坎坷。最后附上源码(两条折线图和运⾏效果)
public class LineChartActiviy extends AppCompatActivity { public LineChart lineChart; public static int[] moreline = {22,24,25,25,25,22}; public static int[] lessline = {14,15,16,17,16,16}; public static final String[] week = {"昨天","今天","明天","周五","周六","周⽇"}; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { te(savedInstanceState); setContentView(artdemo); lineChart = (LineChart)findViewById(art_with); setData(lineChart); } public static void setData(LineChart lineChart) { List
本⽂如果在观看的过程中看到错误和缺漏的,请与我来联系我很感谢!我表⽰感谢您能来看我的⽂章!
发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1689212154a221725.html
评论列表(0条)