这几天在研究图表控件,参阅了网上许多资料,最终选择了MPAndroidChart来用,因为项目周期比较短,就不想踩坑啦,本以为第三方的控件应该不会有坑的,结果还是遇到了问题,在UI的设计中,遇到了把图表放在viewpager里的需求,发现直接把控件放进去,会出现滑动冲突的问题,直接右滑viewpager把事件抢了过去,图表就没法左右滑了,于是结合自己的需求写了一个继承LineChart的控件。完美解决问题,好了,不跟大家多BB,直接看源码。
参考文章链接如下:
http://blog.csdn.net/u014136472/article/details/50310429
http://blog.csdn.net/qq_26296197/article/details/51245027
/**
* Created by Joyming on 2017/10/24.
* 有任何问题可以发我邮箱: joymingchen@foxmail.com
*/
public class LineChartInViewPager extends LineChart {
PointF downPoint = new PointF();
public LineChartInViewPager(Context context) {
super(context);
}
public LineChartInViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
}
public LineChartInViewPager(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
getParent().requestDisallowInterceptTouchEvent(true);// 用getParent去请求,
// 不拦截
return super.dispatchTouchEvent(ev);
}
@SuppressLint("ClickableViewAccessibility")
@Override
public boolean onTouchEvent(MotionEvent evt) {
switch (evt.getAction()) {
case MotionEvent.ACTION_DOWN:
downPoint.x = evt.getX();
downPoint.y = evt.getY();
break;
case MotionEvent.ACTION_MOVE:
Log.i("getScrollX ", getScrollX() + "");
if (getScaleX() > 1 && Math.abs(evt.getX() - downPoint.x) > 5) {
getParent().requestDisallowInterceptTouchEvent(true);
}
break;
}
return super.onTouchEvent(evt);
}
}