【发布时间】:2016-08-16 23:34:11
【问题描述】:
我需要检测我的应用程序何时有滑动,我使用了这段代码,它工作正常:
private float x1,x2;
static final int MIN_DISTANCE = 150;
并覆盖onTouchEvent()方法:
@Override
public boolean onTouchEvent(MotionEvent event)
{
switch(event.getAction())
{
case MotionEvent.ACTION_DOWN:
x1 = event.getX();
break;
case MotionEvent.ACTION_UP:
x2 = event.getX();
float deltaX = x2 - x1;
if (Math.abs(deltaX) > MIN_DISTANCE)
{
Toast.makeText(this, "left2right swipe", Toast.LENGTH_SHORT).show ();
}
else
{
// consider as something else - a screen tap for example
}
break;
}
return super.onTouchEvent(event);
}
但是,如果我的 Activity 上有一个 scrollView,则代码不再起作用,我该如何解决这个问题?我需要完全更改我正在使用的代码吗?
编辑: 我尝试在检测到滑动手势的 if 中添加以下方法:
if (getParent() != null) {
getParent().requestDisallowInterceptTouchEvent(true);
}
但我收到一个错误
requestDisallowInterceptTouchEvent
它说我需要将演员表添加到 getParent()
【问题讨论】:
-
检查scrollView是否消耗了MotionEvent...