2011-09-14 4 views
1

私はいくつかのレイアウトを含むviewflipperを持っています。各レイアウトはスクロールビューをルートとして持っています。Scrollviewsとナビゲーションバーを持つViewflipper

viewflipperの下には、ナビゲーションバーとして機能するtextviewsを含む水平スクロールビューがあります。

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

やスクロールが今情事と一緒に動作します:

私のオリジナルの問題は、情事、私はscrollviewを追加するとすぐに動作を停止しますが、私は次のコードを追加したことでした。

私の今の唯一の問題は、HSVナビバーがちょっと変わったということです。ときには、新しいコンテンツを選択するために横にスライドしようとすると、HSVは元の場所に戻ります。 HSVは私が飛び降りて次のコンテンツに移動したいと思う他の時間です。これはもちろん、スクロールしようとする速度に依存します。

私は、ナビゲーションバーがフリッパーとは独立して動作するようにします。

私はそれを自分で修正するためのコードを理解しようとしていますが、どこにも行きません。

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); 
} 

は誰でも上の任意の光を当てることができます私はMyGestureDetectorクラスを持っている

gestureDetector = new GestureDetector(new MyGestureDetector()); 
gestureListener = new View.OnTouchListener() { 
    public boolean onTouch(View v, MotionEvent event) { 
     if (gestureDetector.onTouchEvent(event)) { 
      return true; 
     } 
     return false; 
    }}; 

私は自分のonCreateで次の持っていますこの?

+0

[ViewPager](http://geekyouup.blogspot.com/2011/07/viewpager-example-from-paug.html)を[ViewPagerIndicator lib](https:// github。 com/JakeWharton/Android-ViewPagerIndicator)の代わりにViewFlipper?私の意見では、これはViewFlipperよりも優れています。私はそれに多くの問題がありました(私のプログラムでは、ViewFlipperを使用したときにスクロールビュー内のリストでflingが動作しません)。 – kameny

+0

Viewpagerは非常に面白そうです。私の主なコーディングがほぼ完了しているので、それが価値があるかどうかは分かりません! – Leon

+0

はい、これはプログラマー生活の中で最も難しいステップです:Dですが、ViewPlipperはうまくいかない場合や、次のプロジェクトで使用する場合は、ViewPagerは非常に良い選択肢です。デモプロジェクトでViewPagerサンプルの1つを実装して、長所と短所を尊重することができます。 – kameny

答えて

0

あなたのHSVはどこですか?それは画面の下部に固定されていますか?もしそうなら、ここに私がすることがあります。あなたのonFlingイベントの中で、フリングのYポジションをチェックし、それがあなたのHSV内にないことを確認してください。そうであれば、偽を返し、あなたは行かなくてはなりません。

+0

それは底にはいります。 1つの解決策は、その領域にジェスチャーが実装されないようにすることだと思いました。これをどうやって行うのですか? – Leon

関連する問題