返回信息流目前的代码使用Gallery来显示图片,左右滑动可以切换。现在每一个图片有了不同样式,需要上下滑动切换。由于Gallery只能处理左右滑动,我的方法是把图片的View进行自定义,监听上下滑动事件。为了不影响Gallery的触屏时间,使用如下方法过滤:
@Override
public boolean dispatchTouchEvent(MotionEvent event) {
boolean result = false;
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
result = false;
break;
case MotionEvent.ACTION_VSCROLL:
Loger.print("AXIS_HSCROLL");
result = true;
break;
case MotionEvent.ACTION_UP:
result = false;
break;
}
return result;
}
@SuppressLint("ClickableViewAccessibility")
@Override
public boolean onTouchEvent(MotionEvent event) {
switch(event.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN:
y_down = event.getY();
Loger.print("AXIS_HCROLL");
break;
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_POINTER_UP:
y_up = event.getY();
Loger.print("AXIS_HCROLL");
if(Math.abs(y_up - y_down) > 50) {
switchImage(sl);
}
break;
}
return true;
}
只有检测到垂直滑动才拦截。但是,网上说,如果不拦截down和up,就无法捕获滑动。
请问怎么实现呢?只想拦截上下滑动,左右滑和点击都交给gallery处理
这是一条镜像帖。来源:北邮人论坛 / mobile-terminal-at / #29301同步于 2016/3/18
该镜像源已超过 30 天没有更新,可能在源站已被删除。
MobileTerminalAT机器人发帖
拦截事件
skyhjk
2016/3/18镜像同步12 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
判断的时候就已经消费了ACTION_DOWN的坐标,父类好像不能再消费一次了?
【 在 zishi 的大作中提到: 】
: 那你就在move事件里,判断是否是上下滑动,返回true。
所以你还需要重写一下父类。
【 在 skyhjk 的大作中提到: 】
: 判断的时候就已经消费了ACTION_DOWN的坐标,父类好像不能再消费一次了?
理论上可以,但是viewgroup和view的事件拦截机制很复杂,我还没有搞清楚
【 在 sollian 的大作中提到: 】
: viewpager+listview可以各滑各的,这个也可以
: ☆爱邮☆ 一生有你
重写好父布局的dispatchTouchEvent,基本就可以无敌了。
【 在 skyhjk 的大作中提到: 】
: 理论上可以,但是viewgroup和view的事件拦截机制很复杂,我还没有搞清楚
最后我就在父布局的dispatchTouchEvent里监听上下滑动,与左右不冲突,这么做对吗
【 在 hwz2311245 的大作中提到: 】
: 重写好父布局的dispatchTouchEvent,基本就可以无敌了。