public boolean onTouchEvent(MotionEvent event) {
if(mAction == TOUCH_ACTION_MOVE){
return false;
}
boolean consumed = mGestureDetector.onTouchEvent(event);
// if (event.getAction() == MotionEvent.ACTION_UP) {
// if (mIsTouched || mIsDragging) {
// processScrollSnap();
// processGesture();
// }
// }
// return super.onTouchEvent(event);
return consumed;
}
public boolean dispatchTouchEvent(MotionEvent event) {
boolean consumed = mGestureDetector.onTouchEvent(event);
final int action = event.getAction();
Log.d("eeeee", "dispatchTouchEvent action="+action+", mAction="+mAction);
final float x = event.getX();
final float y = event.getY();
switch(action){
case MotionEvent.ACTION_DOWN:
mAction = TOUCH_ACTION_NONE;
mLastMotionX = x;
mLastMotionY = y;
break;
case MotionEvent.ACTION_MOVE:
int deltaX = (int) (mLastMotionX - x);
int deltaY = (int) (mLastMotionY - y);
if (mAction == TOUCH_ACTION_NONE) {
if (Math.abs(deltaX) < 10 && Math.abs(deltaY) > 10) {
mAction = TOUCH_ACTION_MOVE;
} else if (Math.abs(deltaX) > 10 && Math.abs(deltaY) < 10) {
mAction = TOUCH_ACTION_SNAP;
}
break;
}
if(mAction == TOUCH_ACTION_SNAP){
return true;
}else if(mAction == TOUCH_ACTION_MOVE){
return super.dispatchTouchEvent(event);
}
break;
case MotionEvent.ACTION_UP:
if (mIsTouched || mIsDragging) {
processScrollSnap();
processGesture();
return consumed;
}
mAction = TOUCH_ACTION_NONE;
default:
mAction = TOUCH_ACTION_NONE;
break;
}
// return consumed;
return super.dispatchTouchEvent(event);
}
分享到:
相关推荐
1. **触摸事件冲突**:ListView和Gallery都处理滑动事件,可能会导致冲突。为了解决这个问题,可能需要重写ListView的`onInterceptTouchEvent()`方法,让Gallery优先处理滑动事件。同时, Gallery的`onTouchEvent()`...
这个设计将ListView的滚动垂直方向的列表特性与Gallery的水平滑动看图功能结合在一起,为用户提供了一种独特的浏览体验。 首先,我们要理解ListView的工作原理。ListView通过复用View(也称为ViewHolder模式)来...
这两种方式都可以实现水平滚动,但需要注意处理好滚动事件,防止与ListView的垂直滚动冲突。 最后,记得在主Activity中设置ListView的Adapter,并确保数据源已经准备好。同时,可能还需要添加一些额外的处理,如...
然而,在实际应用中,当`ViewPager`与`Gallery`(一个可滚动的视图容器)一起使用时,可能会出现事件冲突的问题,导致用户交互体验不佳。本文将深入探讨如何利用`Fragment`和`ViewPager`解决这一问题。 首先,`...
6. 考虑触摸事件:HorizontalListView可能会与用户的触摸手势冲突,特别是当它与其他可触摸元素(如ImageView或Button)在同一布局中时。确保正确处理触摸事件,避免冲突。 7. 使用第三方库:如果你发现系统提供的...
在实际项目中,你可能会遇到Gallery与其它组件交互的问题,比如点击事件冲突。这时,需要合理处理触摸事件的分发,或者使用`setClickable(false)`来避免。 这个RAR文件中的"本源码使用帮助.txt"可能包含了关于如何...
记得在用户手动滑动时取消定时器,以防止与用户的交互冲突。 5. **过渡动画**:`ImageSwitcher` 默认提供了过渡动画,但也可以自定义。通过设置 `setInAnimation()` 和 `setOutAnimation()` 方法,可以指定图片切换...
同时,需要处理子View(如ListView)的滑动冲突,确保上拉下拉动作只由SwipeRefreshLayout处理。 6. **动画处理**: 在滚动过程中,可能会有动画效果,如刷新图标旋转、进度条滑动等。这需要用到Android的动画系统,...
根据提供的文件信息,我们可以分析出该段代码与题目所涉及的主题——Android开发中的HorizontalScrollView、ListView和Gallery控件并无直接关联。但是,基于题目要求,我会先解释代码内容,然后详细探讨...
6. **缺点**:由于Gallery已被弃用,它存在一些问题,比如不支持硬件加速,性能有限,以及与触摸手势冲突等。 随着`Gallery`的淘汰,`ViewPager`成为了实现轮播图的主流解决方案: 1. **ViewPager**:这个组件从...