下面是代码示例:机器人onInterceptTouchEvent()的问题
public class SwipeRelativeLayout extends RelativeLayout {
private String TAG = "SwipedListView";
private MotionEvent previous = null;
private MotionEvent start = null;
public SwipeRelativeLayout(Context context) {
super(context);
}
public SwipeRelativeLayout(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
int action = ev.getAction();
String eventType = "";
switch (action)
{
case MotionEvent.ACTION_CANCEL:
{
eventType = "ACTION_CANCEL";
} break;
case MotionEvent.ACTION_DOWN:
{
eventType = "ACTION_DOWN";
} break;
case MotionEvent.ACTION_UP:
{
eventType = "ACTION_UP";
} break;
case MotionEvent.ACTION_MOVE:
{
eventType = "ACTION_MOVE";
} break;
}
Log.e(TAG, "onInterceptTouchEvent() Type = " + eventType + " X = " + Float.toString(ev.getRawX()) + " Y = " + Float.toString(ev.getRawY()));
return true;
}
@Override
public boolean onTouchEvent(MotionEvent event) {
int action = event.getAction() ;
String eventType = "";
switch (action)
{
case MotionEvent.ACTION_CANCEL:
{
eventType = "ACTION_CANCEL";
} break;
case MotionEvent.ACTION_DOWN:
{
eventType = "ACTION_DOWN";
} break;
case MotionEvent.ACTION_UP:
{
eventType = "ACTION_UP";
} break;
case MotionEvent.ACTION_MOVE:
{
eventType = "ACTION_MOVE";
} break;
}
Log.e(TAG, "onTouchEvent() Type = " + eventType + " X = " + Float.toString(event.getRawX()) + " Y = " + Float.toString(event.getRawY()));
return false;
}
}
有人能解释一下,为什么我可以看到onle ACTION_DOWN事件到onInterceptTouchEvent()? 如已在developers.android.com
在3点告诫,只要你从这个功能,每个以下事件返回false(截至及包括最后上)将首先在这里交付和然后到目标的onTouchEvent()。
我做了这个,但还是老样子看不到事件到onInterceptTouchEvent(),除了ACTION_DOWN
即使你感到沮丧,你问题的语气也需要专业。其他任何事情都不合适,并会降低获得你想要的答案的可能性。 – Flexo
抱歉,对于标题,但andriod中的触摸事件是复杂的,特别是onIntercept()。在www的android中没有关于触摸处理的明确解释,即使在developers.android.com –
latto,thx的答案。不,这部分清楚。 –