我有一个viewflipper,其中包含许多布局。每个布局都有一个scrollview作为根。
在viewflipper下方,我有一个水平滚动视图,其中包含充当导航栏的文本视图。
我原来的问题是,一旦我添加了一个scrollview,fling就停止了工作,但我添加了以下代码:
@Override
public boolean dispatchTouchEvent(MotionEvent ev){
super.dispatchTouchEvent(ev);
return gestureDetector.onTouchEvent(ev);
}
滚动现在和fling一起工作。
我现在唯一的问题是HSV导航栏现在有点奇怪。有时当我尝试滑动它以选择新内容时,HSV会弹回原来的位置。其他时候HSV认为我想扔掉并转移到下一个内容。这当然取决于我尝试滚动它的速度。
我希望导航栏独立于翻板。
我正在尝试理解自己修复它的代码,但却没有到达任何地方。
我的onCreate中有以下内容:
gestureDetector = new GestureDetector(new MyGestureDetector());
gestureListener = new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
if (gestureDetector.onTouchEvent(event)) {
return true;
}
return false;
}};
我有MyGestureDetector类:
class MyGestureDetector extends SimpleOnGestureListener {
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
try {
if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH)
return false;
// right to left swipe
if(e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
flipper.setInAnimation(flip_in_from_right);
flipper.setOutAnimation(flip_out_to_left);
flipper.showNext();
} else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
flipper.setInAnimation(flip_in_from_left);
flipper.setOutAnimation(flip_out_to_right);
flipper.showPrevious();
}
} catch (Exception e) {
// nothing
}
然后覆盖:
@Override
public boolean dispatchTouchEvent(MotionEvent ev){
super.dispatchTouchEvent(ev);
return gestureDetector.onTouchEvent(ev);
}
任何人都可以对此有所了解吗?
答案 0 :(得分:0)
您的HSV究竟在哪里?它固定在屏幕的底部吗?如果是这样,这就是我要做的。在你的onFling活动中,检查fling的Y位置并确保它不在你的HSV中。如果是,那么返回false,你应该好好去。