建一个自己的网站需要多少钱,网站开发设计文案,怎么给自己的网站做域名,化妆品网站建设经济可行性分析昨日夜观天象#xff0c;今日忽见北斗星陨落#xff0c;《Android 折线图表》应运而生。single.pngmany.png一.本篇采用MPAndroidChart#xff0c;大体实现步骤可分为两步#xff1a;1.配置基本属性(包括X,Y轴)2.设置折线数据并添加复制代码二. 第一步#xff0c;配置基本…昨日夜观天象今日忽见北斗星陨落《Android 折线图表》应运而生。 single.png many.png一.本篇采用MPAndroidChart大体实现步骤可分为两步1.配置基本属性(包括X,Y轴)2.设置折线数据并添加复制代码二. 第一步配置基本属性。1.依赖当前工程Build.gradle里 implementation com.github.PhilJay:MPAndroidChart:v3.0.3项目Build.gradle里allprojects {repositories {maven { url https://jitpack.io }}}复制代码2.配置图表控件的基本属性/*** 设置Chart的一些基本配置*/private void initChart() {//配置基本信息lineChart.getDescription().setEnabled(false); //设置描述lineChart.setTouchEnabled(true); //设置是否可以触摸lineChart.setDragDecelerationFrictionCoef(0.9f); //设置滚动时的速度快慢lineChart.setDragEnabled(true); // 是否可以拖拽lineChart.setScaleXEnabled(false); //设置X轴是否能够放大lineChart.setScaleYEnabled(false); //设置Y轴是否能够放大//lineChart.setScaleEnabled(true); // 是否可以缩放 x和y轴, 默认是truelineChart.setDrawGridBackground(false);//设置图表内格子背景是否显示默认是falselineChart.setHighlightPerDragEnabled(true);//能否拖拽高亮线(数据点与坐标的提示线)默认是truelineChart.setBackgroundColor(Color.WHITE); //设置背景颜色//配置X轴属性xAxis lineChart.getXAxis();//xAxis.setLabelRotationAngle(25f); //设置旋转偏移量xAxis.setPosition(XAxis.XAxisPosition.BOTTOM); //设置X轴的位置//设置标签文本格式xAxis.setTextSize(10f);//设置标签文本颜色xAxis.setTextColor(Color.rgb(255, 192, 56));//是否绘制轴线xAxis.setDrawAxisLine(true);//是否绘制网格线xAxis.setDrawGridLines(false);//设置是否一个格子显示一条数据如果不设置这个属性就会导致X轴数据重复并且错乱的问题xAxis.setGranularity(1f);//配置Y轴信息leftAxis lineChart.getAxisLeft();leftAxis.setPosition(YAxis.YAxisLabelPosition.OUTSIDE_CHART); //设置Y轴的位置leftAxis.setDrawGridLines(true); //设置左边的网格线显示leftAxis.setGranularityEnabled(false);//启用在放大时限制y轴间隔的粒度特性。默认值false。leftAxis.setTextColor(Color.rgb(255, 192, 56)); //设置Y轴文字颜色YAxis rightAxis lineChart.getAxisRight(); //获取右边的Y轴rightAxis.setEnabled(false); //设置右边的Y轴不显示//设置图例(也就是曲线的标签)Legend legend lineChart.getLegend();//设置比例图legend.setEnabled(false); //因为自带的图例太丑而且操作也不方便楼主选择自定义设置不显示比例图}复制代码第二步设置折线数据。首先自定义我们的X轴适配器public class MyXFormatter implements IAxisValueFormatter {private List list;public MyXFormatter(List values) {this.list values;}private static final String TAG MyXFormatter;Overridepublic String getFormattedValue(float value, AxisBase axis) {// value represents the position of the label on the axis (x or y)Log.d(TAG, -----getFormattedValue: value) ;if (valuereturn list.get((int) (value));}else {return null;}}}复制代码然后设置折线数据。单条折线的数据方法设置如下/*** 设置单条折线的数据* count 单条折线的数据量*/private void setSingleDatas(int count) {//设置单条折线的X轴数据singleNameList new ArrayList();for (int i 0; i count; i) {int j i1;singleNameList.add(j 月);}//将X轴数据传入自定义的X轴ValueFormatterMyXFormatter formatter new MyXFormatter(singleNameList);xAxis.setValueFormatter(formatter);//设置单条折现的Y轴数据ArrayList yList new ArrayList();for (int i 0; i count; i) {float value (float) (Math.random()*100);yList.add(new Entry(i,value));}LineDataSet lineDataSet new LineDataSet(yList, 单条折线); //设置单条折线ArrayList dataSets new ArrayList();//设置折线的属性lineDataSet.setAxisDependency(YAxis.AxisDependency.LEFT); //设置左右两边Y轴节点描述lineDataSet.setValueTextColor(ColorTemplate.getHoloBlue()); //设置节点文字颜色lineDataSet.setDrawCircles(false); //设置是否显示节点的小圆点lineDataSet.setDrawValues(false); //设置是否显示节点的值lineDataSet.setHighLightColor(Color.rgb(244, 117, 117));//当点击节点时将会出现与节点水平和垂直的两条线可以对其进行定制.此方法为设置线条颜色lineDataSet.setHighlightEnabled(true);//设置是否显示十字线lineDataSet.setColor(Color.BLUE); //设置线条颜色lineDataSet.setCircleColor(Color.WHITE); //设置节点的圆圈颜色lineDataSet.setLineWidth(1f); //设置线条宽度lineDataSet.setCircleRadius(4f);//设置每个坐标点的圆大小lineDataSet.setDrawCircleHole(false);//是否定制节点圆心的颜色若为false则节点为单一的同色点若为true则可以设置节点圆心的颜色lineDataSet.setValueTextSize(9f); //设置 DataSets 数据对象包含的数据的值文本的大小(单位是dp)。//设置折线图填充lineDataSet.setDrawFilled(false); //Fill填充可以将折线图以下部分用颜色填满lineDataSet.setFillAlpha(65); 设置填充区域透明度默认值为85lineDataSet.setFillColor(ColorTemplate.getHoloBlue());//设置填充颜色lineDataSet.setFormLineWidth(1f);lineDataSet.setFormSize(15.f);dataSets.add(lineDataSet);LineData data new LineData(dataSets);lineChart.setData(data); //添加数据}复制代码多条折线的数据设置方法如下/*** 设置多条折线的数据* param chartData //线条x轴的个数* param count //线条的个数*/private void setManyDatas(int chartData, int count) {singleNameList new ArrayList();for (int i 0; i chartData; i) {int j i1;singleNameList.add(j 月);}MyXFormatter formatter new MyXFormatter(singleNameList);xAxis.setValueFormatter(formatter);initChartColors(); //设置线条颜色集合initChartNames(count); //设置不同线条名字的集合ArrayList dataSets new ArrayList(); //线条数据集合for (int i 0; i count; i) {//设置单条折现的Y轴数据ArrayList yList new ArrayList();for (int j 0; j chartData; j) {float value (float) (Math.random()*100);yList.add(new Entry(j,value));}LineDataSet lineDataSet new LineDataSet(yList, nameList.get(i)); //设置单条折线//设置折线的属性lineDataSet.setAxisDependency(YAxis.AxisDependency.LEFT); //设置左右两边Y轴节点描述lineDataSet.setValueTextColor(ColorTemplate.getHoloBlue()); //设置节点文字颜色lineDataSet.setDrawCircles(false); //设置是否显示节点的小圆点lineDataSet.setDrawValues(false); //设置是否显示节点的值lineDataSet.setHighLightColor(Color.rgb(244, 117, 117));//当点击节点时将会出现与节点水平和垂直的两条线可以对其进行定制.此方法为设置线条颜色lineDataSet.setHighlightEnabled(true);//设置是否显示十字线lineDataSet.setColor(colours.get(i)); //设置线条颜色lineDataSet.setCircleColor(Color.WHITE); //设置节点的圆圈颜色lineDataSet.setLineWidth(1f); //设置线条宽度lineDataSet.setCircleRadius(4f);//设置每个坐标点的圆大小lineDataSet.setDrawCircleHole(false);//是否定制节点圆心的颜色若为false则节点为单一的同色点若为true则可以设置节点圆心的颜色lineDataSet.setValueTextSize(9f); //设置 DataSets 数据对象包含的数据的值文本的大小(单位是dp)。//设置折线图填充lineDataSet.setDrawFilled(false); //Fill填充可以将折线图以下部分用颜色填满lineDataSet.setFillAlpha(65); 设置填充区域透明度默认值为85lineDataSet.setFillColor(ColorTemplate.getHoloBlue());//设置填充颜色lineDataSet.setFormLineWidth(1f);lineDataSet.setFormSize(15.f);dataSets.add(lineDataSet);}LineData data new LineData(dataSets);lineChart.setData(data); //添加数据}/*** 设置线条名字集合* param count*/private void initChartNames(int count) {nameList new ArrayList();for (int i 0; i count; i) {int j i1;String name 线条 j;nameList.add(name);}}/*** 提前设置颜色集合*/private void initChartColors() {//颜色集合colours new ArrayList();colours.add(Color.GREEN);colours.add(Color.BLUE);colours.add(Color.RED);colours.add(Color.CYAN);colours.add(Color.BLACK);colours.add(Color.GRAY);}复制代码由上代码相信看官老爷们不难看出单条折线和多条折线的实现思路其实有异曲同工之妙。都是创建了一个ArrayList集合添加LineDataSet 对象并设置属性。最后将此集合通过LineData的构造方法调用图表对象的.setData()方法进行添加的。补充图例也就是这玩意 image.png最好自己定义写个GirdView就可以了。还能自动换行美滋滋。官方的不多说丑而且自动换行有问题。三.踩坑之处1.自定义X轴数据。 这里有一个不得不说的要点我们在自定义X轴数据创建自己的IAxisValueFormatter实现类时一定要注意提前设置 X轴的这个属性//设置是否一个格子显示一条数据xAxis.setGranularity(1f);复制代码如果不设置这个属性就会导致X轴数据重复并且错乱原因是IAxisValueFormatter实现类的的方法getFormattedValue(float value, AxisBase axis)中的value返回错乱。2.数据刷新。如果你实现了自己的图表控件并且有多种类型的数据需要重复设置需要刷新图表控件时若有X轴经常显示错乱的问题不妨多调用一次lineChart.setData(data);方法。四.到此就已经实现了折线图表的功能。随手分享喜欢的朋友可以关注微信公众号MiHomes后续会有更多更好的博客推送给您。另欢迎指出不足会进行更正