求大神解答自定义控件的事件分发机制问题..

Jupiterxx 2016-12-29 04:54:42
我现在的需求是一个纵向手势的控件(父)里套了个横向手势的控件(子)..
当然都有触摸事件的话这样就冲突了.. 所以我重写了子控件的dispatchTouchEvent方法..

float mX ;
float mY;
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
boolean flag = super.dispatchTouchEvent(ev);
float y = ev.getY();
float x = ev.getX();

switch (ev.getAction()) {
case MotionEvent.ACTION_DOWN:
LogUtil.logi("ACTION_DOWN");
mX = x;
mY = y;
break;
case MotionEvent.ACTION_MOVE:
LogUtil.logi("ACTION_MOVE");
if (Math.abs(x - mX) < Math.abs(y - mY ) ) {
getParent().requestDisallowInterceptTouchEvent(false);
return false;
}
break;
}

// getParent().requestDisallowInterceptTouchEvent(true);
return flag;
}

这样纵向滑动的move事件就可以被放行到父控件了.. 但是问题是down事件只有一个.. 这样down就被拦截了.. 父控件没有down后续的move事件也不能处理.. 有大神能教教我这样的需求要如何实现么...
...全文
128 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧