2011-09-14 54 views
1

我有一個viewflipper其中包括一些佈局。每個佈局都有一個滾動視圖作爲根。Viewflipper與滾動視圖和導航欄

在viewflipper下方,我有一個水平滾動視圖,其中包含充當導航欄的textviews。

我原來的問題是,掃視停止爲我增加了一個滾動視圖儘快工作,但我添加以下代碼:

@Override 
public boolean dispatchTouchEvent(MotionEvent ev){ 
super.dispatchTouchEvent(ev); 
return gestureDetector.onTouchEvent(ev); 
} 

而且滾動現在一扔工作一起。

我現在唯一的問題是,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

您是否已通過兼容性軟件包[ViewPagerIndicator lib](https:// github)嘗試[ViewPager](http://geekyouup.blogspot.com/2011/07/viewpager-example-from-paug.html) com/JakeWharton/Android-ViewPagerIndicator)而不是ViewFlipper?在我看來,這比ViewFlipper更好,我遇到了很多問題(在我的程序中,當我使用ViewFlipper時,在scrollview裏面的列表不會起作用)。 – kameny

+0

Viewpager看起來很有趣。不知道它是否值得,但我的主要編碼差不多完成了! – Leon

+0

是的,這是程序員生活中最困難的一步:D,但是如果ViewFlipper不起作用,或者可能在您將使用它的下一個項目上,ViewPager是一個非常好的選擇。嘗試在演示項目中實現一個ViewPager示例之後,您可以尊重優點和缺點。 – kameny

回答

0

你的HSV究竟在哪裏?它固定在屏幕的底部嗎?如果是這樣,這就是我會做的。在您的onFling事件中,請檢查投擲的Y位置並確保它不在HSV內。如果是,那麼返回false,你應該很好走。

+0

它固定在底部是。我確實認爲一種解決方案可能是防止在該領域實施手勢。我如何去做這個? – Leon