android GestureDetector监听屏幕事件后 子view 的onTouch 无法触发 100
总共4个类关系依此从上到下ActivityCoursesextendsActivityMyScrollViewextendsHorizontalScrollViewMov...
总共4个类 关系依此从上到下
ActivityCourses extends Activity
MyScrollView extends HorizontalScrollView
MovieLayout extends LinearLayout MovieAdapter extends BaseAdapter
View
现在需要做的就是 通过GestureDetector 实现MyScrollView 的滑动
MovieLayout 的子view onTouch 与 GestureDetector 滑动相冲突
GestureDetector 的onSingleTapUp 也无法获取 MovieLayout下面的子View
请教高人指点。。。。。。。。。。。
// 监听屏幕动作事件
GestureDetector gestureDetector = new GestureDetector(new OnGestureListener() {
private int LEFT_DISTANCE = -100;
private int RIGHT_DISTANCE = 100;
// 用户轻触触摸屏,由1个MotionEvent ACTION_DOWN触发
public boolean onDown(MotionEvent e) {
return true;
}
// 用户按下触摸屏、快速移动后松开,由1个MotionEvent ACTION_DOWN,
// 多个ACTION_MOVE, 1个ACTION_UP触发
// e1:第1个ACTION_DOWN MotionEvent
// e2:最后一个ACTION_MOVE MotionEvent
// velocity X:X 轴上的移动速度,像素/秒
// velocity Y:Y 轴上的移动速度,像素/秒
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
float distanceX = e2.getX() - e1.getX();
if (distanceX < LEFT_DISTANCE) {
// left
hsview.nextPage();
} else if (distanceX > RIGHT_DISTANCE) {
// right
hsview.prePage();
}else{
hsview.backPage();
}
return true;
}
// 用户长按触摸屏,由多个MotionEvent ACTION_DOWN触发
public void onLongPress(MotionEvent e) {
}
// 用户按下触摸屏,并拖动,由1个MotionEvent ACTION_DOWN, 多个ACTION_MOVE触发
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
hsview.scrollBy((int) distanceX, 0);
return true;
}
// 用户轻触触摸屏,尚未松开或拖动,由一个1个MotionEvent ACTION_DOWN触发
// 注意和onDown()的区别,强调的是没有松开或者拖动的状态
public void onShowPress(MotionEvent e) {
}
// 用户(轻触触摸屏后)松开,由一个1个MotionEvent ACTION_UP触发
public boolean onSingleTapUp(MotionEvent e) {
Log.i("GestureDetector", "********onSingleTapUp********");
return false;
}
}); 展开
ActivityCourses extends Activity
MyScrollView extends HorizontalScrollView
MovieLayout extends LinearLayout MovieAdapter extends BaseAdapter
View
现在需要做的就是 通过GestureDetector 实现MyScrollView 的滑动
MovieLayout 的子view onTouch 与 GestureDetector 滑动相冲突
GestureDetector 的onSingleTapUp 也无法获取 MovieLayout下面的子View
请教高人指点。。。。。。。。。。。
// 监听屏幕动作事件
GestureDetector gestureDetector = new GestureDetector(new OnGestureListener() {
private int LEFT_DISTANCE = -100;
private int RIGHT_DISTANCE = 100;
// 用户轻触触摸屏,由1个MotionEvent ACTION_DOWN触发
public boolean onDown(MotionEvent e) {
return true;
}
// 用户按下触摸屏、快速移动后松开,由1个MotionEvent ACTION_DOWN,
// 多个ACTION_MOVE, 1个ACTION_UP触发
// e1:第1个ACTION_DOWN MotionEvent
// e2:最后一个ACTION_MOVE MotionEvent
// velocity X:X 轴上的移动速度,像素/秒
// velocity Y:Y 轴上的移动速度,像素/秒
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
float distanceX = e2.getX() - e1.getX();
if (distanceX < LEFT_DISTANCE) {
// left
hsview.nextPage();
} else if (distanceX > RIGHT_DISTANCE) {
// right
hsview.prePage();
}else{
hsview.backPage();
}
return true;
}
// 用户长按触摸屏,由多个MotionEvent ACTION_DOWN触发
public void onLongPress(MotionEvent e) {
}
// 用户按下触摸屏,并拖动,由1个MotionEvent ACTION_DOWN, 多个ACTION_MOVE触发
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
hsview.scrollBy((int) distanceX, 0);
return true;
}
// 用户轻触触摸屏,尚未松开或拖动,由一个1个MotionEvent ACTION_DOWN触发
// 注意和onDown()的区别,强调的是没有松开或者拖动的状态
public void onShowPress(MotionEvent e) {
}
// 用户(轻触触摸屏后)松开,由一个1个MotionEvent ACTION_UP触发
public boolean onSingleTapUp(MotionEvent e) {
Log.i("GestureDetector", "********onSingleTapUp********");
return false;
}
}); 展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询