scrollview 与自定义控件的上下滑动冲突
来源:互联网 发布:仓储软件有哪些 编辑:程序博客网 时间:2024/05/20 04:11
/**
* 能够兼容ViewPager的ScrollView
* @Description: 解决了ViewPager在ScrollView中的滑动反弹问题
*/
public
class
ScrollViewExtend
extends
ScrollView {
// 滑动距离及坐标
private
float
xDistance, yDistance, xLast, yLast;
public
ScrollViewExtend(Context context, AttributeSet attrs) {
super
(context, attrs);
}
@Override
public
boolean
onInterceptTouchEvent(MotionEvent ev) {
switch
(ev.getAction()) {
case
MotionEvent.ACTION_DOWN:
xDistance = yDistance = 0f;
xLast = ev.getX();
yLast = ev.getY();
break
;
case
MotionEvent.ACTION_MOVE:
final
float
curX = ev.getX();
final
float
curY = ev.getY();
xDistance += Math.abs(curX - xLast);
yDistance += Math.abs(curY - yLast);
xLast = curX;
yLast = curY;
if
(xDistance > yDistance){
return
false
;
}
}
return
super
.onInterceptTouchEvent(ev);
}
}
这种解决方法虽然解决了两者横向滑动的冲突,但是的缺点在于,上下滑动无法让控件响应到。
所以在这里需要对ACTIOM_MOVE进行判断,可以对XY轴的移动坐标进行比较,
代码如下
/** * 能够兼容ViewPager的ScrollView * @Description: 解决了ViewPager在ScrollView中的滑动反弹问题 */public class ScrollViewExtend extends ScrollView {// 滑动距离及坐标private float xDistance, yDistance, xLast, yLast;public ScrollViewExtend(Context context, AttributeSet attrs) {super(context, attrs);}@Overridepublic boolean onInterceptTouchEvent(MotionEvent ev) {switch (ev.getAction()) {case MotionEvent.ACTION_DOWN:xDistance = yDistance = 0f;xLast = ev.getX();yLast = ev.getY();break;case MotionEvent.ACTION_MOVE:final float curX = ev.getX();final float curY = ev.getY();xDistance += Math.abs(curX - xLast);yDistance += Math.abs(curY - yLast);xLast = curX;yLast = curY;//如果X轴移动量大于Y轴的1.5倍及以上 则返回true scrollview滑动 if(xDistance> yDistance*1.5){return true;}else{return false;}}return super.onInterceptTouchEvent(ev);}}
0 0
- scrollview 与自定义控件的上下滑动冲突
- 左右滑动与上下滑动的冲突
- 自定义的ListView 解决与ScrollView的滑动冲突
- Android 解决GridView与ScrollView上下滑动冲突
- 解决滑动控件与ScrollView冲突
- 自定义MyListView,解决与ScrollView滑动冲突
- 自定义控件之——实现ScrollView上下滑动功能
- 【Android自定义控件】不用ScrollView实现上下两屏滑动
- android解决listview与scrollview的冲突、自定义listview的高度以及上下拉刷新
- 输入框与scrollview的滑动冲突
- ListView与ScrollView的滑动冲突解决方法
- 解决ListView与ScrollView的滑动冲突
- 处理SwipeLayout与scrollView的滑动冲突
- 解决ScrollView 与 ListView 的滑动冲突
- ScrollView 与 recyclerView、WebView的滑动冲突
- ScrollView与ListView 的滑动冲突
- ScrollView嵌套可以水平滚动的自定义控件时滑动事件冲突问题解决办法
- 监听ScrollView 的上下滑动
- FORM当前状态分析
- oracle查看sql进程执行情况
- 计算机核心期刊(国外)
- Java Map 集合类简介
- HTC G12刷Recovery提示CID错误问题的解决
- scrollview 与自定义控件的上下滑动冲突
- hibernate Orm在两个表之间做关联
- http://blog.csdn.net/yakihappy?viewmode=contents
- android 中的网络问题
- 队列、堆栈与数组、链表的关系与区分
- SWITCHOVER主库出现LOG SWITCH GAP和RESOLVABLE GAP解决一例
- Spring AOP 详解
- 图形版wordpress安装 错误:user的密码不正确。忘记密码了?---phpmyadmin-#1045 无法登录 MySQL 服务器
- HTC Desire S/G12获取ROOT权限详细图文教程