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,处理刷新数据)
代码如下:
在以上的代码中,onChartGestureEnd和onChartTranslate两个地方都做处理,因为在滑动的时候,当手离开了图表时(调用onChartGestureEnd),图表还会继续滑动(调用onChartTranslate),此时,如果手指离开了图表的时候,图表没有滑动到最后一个数据项,而由于惯性,继续滑动到最后一个数据项,此时就可以触发加载更多了。
在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),此时,如果手指离开了图表的时候,图表没有滑动到最后一个数据项,而由于惯性,继续滑动到最后一个数据项,此时就可以触发加载更多了。
相关文章推荐
- MPAndroidChart中,滑动图表到最后一个的时候加载更多数据
- 加载更多时,判断tableView快要滑动到底部的时候在去请求更多数据的公式
- android ListView 滑动到最底部并且停止滑动时候加载数据
- Android 滑动加载数据
- scrollview 实现滑动到底部加载更多数据
- 7、Android数据分批加载-滑动到底部自动加载列表
- 【Android界面实现】整合了刷新、加载更多、滑动删除功能的XListview
- android左右滑动加载分页以及动态加载数据
- android左右滑动加载分页以及动态加载数据
- android上拉下拉加载更多数据
- android 下拉刷新上拉加载更多,高仿ios左滑动删除item,解决了众多手势问题
- android listView 滑动加载数据 该数据是服务端获取的
- Android 为什么我的PullListView只能向下滑动,不能向上滑动加载更多???
- android中listview滑动到底部自动加载数据后它的滑块自动回到第一项怎么解决?
- Android ViewPager动态向前向后加载数据,自定义viewPager滑动速度
- Android数据分批加载-滑动到底部自动加载列表
- android listView滑动加载数据
- Android ListView下拉加载更多,http请求加载数据,Item点击事件
- Android第十五期 - Viewpage+Fragment页面滑动加载数据
- Android Demo之旅 ListView底部添加加载更多按钮实现数据分页