Android图表控件MPAndroidChart(折线图、柱状图)⼀、效果
实现效果:x轴间距固定不变,y轴不显⽰,⼿指向前滑动实现多条数据的展⽰,双击不放⼤,⼤⼩固定,屏幕最多展⽰7个点。
问题:次代码若将y轴显⽰,x轴会出问题
e9dd8d4736bd6ed8df3904778c750d6.jpg
⼆、步骤
1.添加依赖
在project的adle中引⼊
三、折线图
1.封装类
aphics.Color;
aphics.Matrix;
import com.github.mikephil.charting.charts.Chart;
import com.github.mikephil.charting.charts.LineChart;
import com.github.mikephil.chartingponents.Description;
import com.github.mikephil.chartingponents.Legend;
import com.github.mikephil.chartingponents.XAxis;
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.formatter.ValueFormatter;
DecimalFormat;
import java.util.List;
/**
* 折线图表
*/
public class LineChartUtils {
/**
* 初始化图表
*
* @param chart 原始图表
* @return 初始化后的图表
*/
public static LineChart initChart(LineChart chart, boolean isXEnbale, boolean isLeftYEnable, boolean isRightYEnable) {
// 不显⽰表格颜⾊
chart.setDrawGridBackground(false);
chart.setDrawBorders(false);
chart.setDragEnabled(true);//是否可以⽤⼿指移动图表
chart.setScaleEnabled(false);//设置为false以禁⽌通过在其上双击缩放图表。是否可以缩放图表,当屏幕⼀屏显⽰不下,希望能通过缩放或滑动图表,仅设置这个和上⾯那个        chart.setTouchEnabled(true);
chart.animateX(1500);
chart.setDoubleTapToZoomEnabled(false);
//下⽅3个设置ScaleEnabled,DragEnabled⽤到,表⽰x轴放⼤4倍,y不变
//        Matrix matrix=new Matrix();
//        matrix.postScale(4.0f,0.0f);
//        ViewPortHandler().refresh(matrix,chart,false);
//禁⽌x轴y轴同时进⾏缩放
chart.setPinchZoom(false);
// 不显⽰数据描述
Description description = Description();
description.setEnabled(false);
chart.setDescription(description);
chart.setDragDecelerationEnabled(false);//拖拽滚动时,⼿放开是否会持续滚动,默认是true(false是拖到哪是哪,true拖拽之后还会有缓冲)
chart.setDragDecelerationFrictionCoef(0.88f);//与上⾯那个属性配合,持续滚动时的速度快慢,[0,1) 0代表⽴即停⽌。
// 不显⽰图例
Legend legend = Legend();
legend.setEnabled(false);
chart.setNoDataTextColor(Color.parseColor("#999999"));
chart.setNoDataText("你还没有记录数据");
initLineChart(chart, isXEnbale, isLeftYEnable, isRightYEnable);
chart.invalidate();
return chart;
}
/**
* 初始化xy轴
*
android radiogroup* @param chart
*/
public static void initLineChart(LineChart chart, boolean isXEnbale, boolean isLeftYEnable, boolean isRightYEnable) {
setXAxisBasic(chart, isXEnbale);
setXAxisBasic(chart, isXEnbale);
setLeftYAxisBasic(chart, isLeftYEnable);
setRightYAxisBasic(chart, isRightYEnable);
}
/**
* x轴基础设置
*
* @param chart
* @param isEnable 设置x轴启⽤或禁⽤
*/
public static void setXAxisBasic(LineChart chart, boolean isEnable) {
//得到x轴
XAxis xAxis = XAxis();
/
/是否调⽤x轴
xAxis.setEnabled(isEnable);
xAxis.setDrawAxisLine(true);//是否绘制x轴的直线
xAxis.setDrawGridLines(true);//是否画⽹格线
xAxis.setGridColor(Color.GRAY);
xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);// 设置x轴数据的位置
xAxis.setTextSize(3);//设置轴标签字体⼤⼩
xAxis.setTextColor(Color.parseColor("#999999"));//设置轴标签字体的颜⾊
xAxis.setAvoidFirstLastClipping(true);//图表将避免第⼀个和最后⼀个标签条⽬被减掉在图表或屏幕的边缘
//设置竖线的显⽰样式为虚线  lineLength控制虚线段的长度  spaceLength控制线之间的空间
}
/**
* 左侧y轴基础设置
*
* @param chart
* @param isEnable
*/
public static void setLeftYAxisBasic(LineChart chart, boolean isEnable) {
//不显⽰y轴左边的值
}
/
**
* 右侧y轴基础设置
*
* @param chart
* @param isEnable
*/
public static void setRightYAxisBasic(LineChart chart, boolean isEnable) {
// 不显⽰y轴右边的值
}
/**
* x轴在点击切换后重新设置的值
*
* @param chart
* @param labelCount
* @param maximum
* @param xRangeMaximum
*/
public static void setXAxis(LineChart chart, int labelCount, float maximum, int xRangeMaximum) {
chart.setScaleMinima(1.0f, 1.0f);
//上⾯两⾏必须放最上⾯否则折线间隔失效
XAxis xAxis = XAxis();
xAxis.setLabelCount(labelCount, true);// 设置X轴的刻度数量,第⼆个参数表⽰是否平均分配
xAxis.setAxisMinimum(-1f);
//        xAxis.setAxisMinimum(0f);
//        xAxis.setAxisMaximum(maximum);//设置X轴的值(最⼩值、最⼤值、然后会根据设置的刻度数量⾃动分配刻度显⽰)
xAxis.setAxisMaximum(maximum + 1f);//设置X轴的值(最⼩值、最⼤值、然后会根据设置的刻度数量⾃动分配刻度显⽰)
xAxis.setGranularity(1f);//设置x轴坐标之间的最⼩间隔(因为此图有缩放功能,X轴,Y轴可设置可缩放),放在setValueFormatter之前设置        //设置当前图表中最多在x轴坐标线上显⽰的刻度线总量为6

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。