您的位置:首页 > 移动开发 > Android开发

MPAndroidChart中,滑动图表到最后一个的时候加载更多数据

2016-12-13 12:40 579 查看
摘要: MPAndroidChart中,滑动图表到最后一个的时候加载更多数据

在MPAndroidChart中,有时候显示在图表中的数据太多,想要分页加载数据时,可以调用setOnChartGestureListener这个事件,然后在onChartGestureStart、onChartGestureEnd和onChartTranslate方法中进行做相关的处理。

当然,要让MPAndroidChart中的图表可滑动,必须设置mBarChart.setTouchEnabled(true); mBarChart.setDragEnabled(true)。在滑动事件中,判断是否滑动到图表的最右边的尽头(即最后一个entry),可以使用mBarChart.getHighestVisibleXIndex();获取在可视区域中显示在x轴最右边的entry的index,这样就可以把这个index和当前总的数据的个数进行比较,然后进行相关的处理了。(mBarChart.getLowestVisibleXIndex()是获取在可视区域中,显示在x轴最左边的index,可以根据这个index,处理刷新数据)

代码如下:

mBarChart.setOnChartGestureListener(new OnChartGestureListener() {
@Override
public void onChartGestureStart(MotionEvent me, ChartTouchListener.ChartGesture lastPerformedGesture) {
mIsCanLoad = false;
}

@Override
public void onChartGestureEnd(MotionEvent me, ChartTouchListener.ChartGesture lastPerformedGesture) {

int rightXIndex = mBarChart.getHighestVisibleXIndex();    //获取可视区域中,显示在x轴最右边的index
int size = mBarChart.getBarData().getXVals().size();

if(lastPerformedGesture == ChartTouchListener.ChartGesture.DRAG){
mIsCanLoad = true;
if(rightXIndex == size-1 || rightXIndex == size){
mIsCanLoad = false;
//加载更多数据的操作

}
}
}

@Override
public void onChartLongPressed(MotionEvent me) {

}

@Override
public void onChartDoubleTapped(MotionEvent me) {

}

@Override
public void onChartSingleTapped(MotionEvent me) {

}

@Override
public void onChartFling(MotionEvent me1, MotionEvent me2, float velocityX, float velocityY) {

}

@Override
public void onChartScale(MotionEvent me, float scaleX, float scaleY) {
Log.i("My","onChartScale");
}

@Override
public void onChartTranslate(MotionEvent me, float dX, float dY) {
if(mIsCanLoad){
int rightXIndex = mBarChart.getHighestVisibleXIndex();     //获取可视区域中,显示在x轴最右边的index
int size = mBarChart.getBarData().getXVals().size();
if(rightXIndex == size-1 || rightXIndex == size){
mIsCanLoad = false;
//加载更多数据的操作

}
}
}
});

在以上的代码中,onChartGestureEnd和onChartTranslate两个地方都做处理,因为在滑动的时候,当手离开了图表时(调用onChartGestureEnd),图表还会继续滑动(调用onChartTranslate),此时,如果手指离开了图表的时候,图表没有滑动到最后一个数据项,而由于惯性,继续滑动到最后一个数据项,此时就可以触发加载更多了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息