日志从不记录ACTION_UP or 行动_移动(我从代码示例中删除了它以缩短)
这是我的代码的缩短版本:
public class ProfileBadgeView extends LinearLayout {
Activity act;
public ProfileBadgeView(Context context) {
super(context);
}
public ProfileBadgeView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public ProfileBadgeView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public void initView(Activity act) {
//..init
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
if (ev.getAction() == MotionEvent.ACTION_DOWN) {
logIntercept("ACTION DOWN");
} else if (ev.getAction() == MotionEvent.ACTION_UP) {
logIntercept("ACTION_UP");
}
return false;
}
@Override
public boolean onTouchEvent(MotionEvent ev) {
return true;
}
private void logIntercept(Object obj) {
Log.i(this.getClass().getSimpleName() + " INTERCEPT :", obj.toString());
}
}
Your onInterceptTouchEvent
之后不调用方法ACTION_DOWN
因为你回来而发生的事件true
in onTouchEvent
方法。所以所有其他事件都被发送进来onTouchEvent
并且不在onInterceptTouchEvent
还有更多:
使用这个函数需要小心,因为它有一个相当复杂的
与 View.onTouchEvent(MotionEvent) 交互,使用它需要
以正确的方式实施该方法以及该方法。
事件将按以下顺序接收:
您将在这里收到 down 事件。 down事件将被处理
要么由该视图组的子视图组提供,要么提供给您自己的视图组
onTouchEvent() 方法来处理;这意味着你应该实施
onTouchEvent() 返回 true,因此您将继续看到其余部分
手势(而不是寻找父视图来处理它)。还,通过从 onTouchEvent() 返回 true,您将不会收到任何
onInterceptTouchEvent() 中的以下事件和所有触摸处理
必须像平常一样在 onTouchEvent() 中发生.
http://developer.android.com/reference/android/view/ViewGroup.html#onInterceptTouchEvent(android.view.MotionEvent) http://developer.android.com/reference/android/view/ViewGroup.html#onInterceptTouchEvent(android.view.MotionEvent)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)