如果想实现左右滑动首先要用到的一个API是:
refresh(Matrix newMatrix, View chart, boolean invalidate)
如果想让它左右移动需要设置它的横向缩放相应的比例:
Matrix m = new Matrix();
m.postScale(scaleX, 1f);//两个参数分别是x,y轴的缩放比例。例如:将x轴的数据放大为之前的1.5倍
mChart.getViewPortHandler().refresh(m, mChart, false);//将图表动画显示之前进行缩放
如果你的bar的个数是固定的话,做完上面的就可以完成了,但是如果bar的个数不固定,比如你在30个bar的时候是正好的大小,如果你的个数突然变成了10个,bar柱形图就会变得非常宽。 这个时候你就需要设置一下它的比例,我的思路是选取一个正好的比例值,然后以这个比例为基数进行设置:
private void setChartData(){
Matrix m = new Matrix();
m.postScale(scaleNum(20), 1f);//两个参数分别是x,y轴的缩放比例。例如:将x轴的数据放大为之前的1.5倍
mChart.getViewPortHandler().refresh(m, mChart, false);//将图表动画显示之前进行缩放
}
//30个横坐标时,缩放4f是正好的。
private float scalePercent = 4f/30f;
private float scaleNum(int xCount){
return xCount * scalePercent;
}
这样就基本可以以bar的固定宽度操作左右滑动了。