/**
*
能够兼容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);
}
@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;
//如果X轴移动量大于Y轴的1.5倍及以上 则返回true scrollview滑动
if(xDistance> yDistance*1.5){
return true;
}else{
return false;
}
}
return super.onInterceptTouchEvent(ev);
}
}
分享到:
相关推荐
安卓自定义控件左右滑动动态添加ImageView控件 ScrollView
看到这种问题,自然而然的就会想到scrollview和其他可滑动控件的冲突问题。 解决思路 用户的左右滑动操作被最外层的scrollView控件处理掉了,所以只要让scrollview对左右滑动事件不监听,让其子控件处理左右滑动事件...
根据ScrollView的自定义实现 RelativeLayout跟随手势的上下滑动显示和隐藏顶部标题栏,话不多说 直接上代码
主要为大家详细介绍了Android自定义控件ScrollView实现上下滑动功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
ScrollView+ViewPager自定义控件
主要解决ScrollView与ListView的滑动冲突
自定义的ViewPager,可以实现页面之前的相互切换,可以...同时该ViewPager解决了传统ViewPager和ListView,ScrollView滑动冲突问题,当然ListView的滑动冲突实在ScrollView中解决的。实践表明,滑动切换效果较好。
循环滚动ScrollView+自定义UIPageControl
自定义一个滑块,可以在竖直方向上滑动并且与ScrollView结合起来使用。滑动滑块,scrollView跟着滑动。滑动ScrollView,滑块也跟着动。
Android ScrollView向上滑动控件顶部悬浮效果实现,请参考文章:http://blog.csdn.net/viviwen123/article/details/39669811
android ScrollView上下左右任意滑动,图片原样超出屏幕尺寸任意滑动。
1、ScrollView嵌套listView、GridView时滑动冲突,自定义 ListView、GridView; 2、自定义ScrollView,解决 当有横向的滑动操作时,与ScrollView上下滑动冲突; 2、横向ListView
解决listview和scrollview冲突 使用linearlayout自定一个listview 用法与listview相同
完美解决listView嵌套scrollView的滑动冲突问题
Android中自定义ListView,解决scrollview嵌套listview 滑动事件冲突,是非常常见的问题,我写了一个例子和大家交流学习
简单而巧妙地监听ScrollView里面的所有的子控件,并对事件作出处理。
Android,自定义ScrollView,实现过度滑动时回弹效果。纵向的ScrollView,过度滑动时,手指抬起即出现回弹效果,这是一种边界反馈。
解决系统ListView不能直接放在ScrollView中,自定义了一个ListView,实现ListView全部功能
仿淘宝商品页上下滑动控件,这是一个viewGroup容器,实现上下两个frameLayout拖动切换,解决与WebView、ScrollView、ListView嵌套冲突。