2011-04-12 38 views
5

私は、アクティビティをロードするさまざまなタブを持つタブアクティビティであるアプリケーションを持っています。スワイプジェスチャーを追加して、タブ間、タブコントロール自体、およびタブに読み込まれた各アクティビティの両方で切り替えることをお勧めします。このようなことは可能でしょうか?タブコントロールでホストされているアクティビティに対してジェスチャを行っているとき、または内部アクティビティがタブホストにデータを渡さなければならないときに、ジェスチャがどのような「深さ」で聴かれているかはわかりません。スワイプからスイッチへの切り替え選択

答えて

3

確かに可能です。ジェスチャを子にディスパッチするかどうかを決定するには、カスタムレイアウトを作成してonTouchEventonInterceptTouchEventをオーバーライドする必要があります。どのようにそれをやり遂げることができるかについては、HorizontalPagerのソースを参照してください。実際にはHorizo​​ntalPagerをまっすぐに使用したいかもしれませんが(スクロールしているタブにはデモがあります)、スクロールするコンテンツによってタブ間でスワイプできることがはっきりと分かります。

2

ジェスチャ検出器を使用できます。私が知っている限り、それはジェスチャーを「グローバルに」聞きます。それをタブに制限するには、ジェスチャがタブの境界内で発生しているかどうかをチェックできます。

GestureDetector

供給MotionEventsを用いて様々なジェスチャイベント を検出。 GestureDetector.OnGestureListener コールバックは、 特定のモーションイベントが発生したときにユーザーに通知します。 このクラスはタッチで報告された MotionEventsでのみ使用してください( トラックボールイベントでは使用しないでください)。この クラスを使用するには:

  • は nTouchEvent(MotionEvent)の方法では、あなたの閲覧のために GestureDetectorのインスタンスを作成します あなたは
  • onTouchEvent(MotionEvent)を呼び出して確認してください。イベントが発生したときに、あなたのコールバックで定義されて メソッドが実行さ ます

出典:http://developer.android.com/reference/android/view/GestureDetector.html

スワイプジェスチャー

このページではGestureDetectorを使用してスワイプジェスチャーを認識する方法を示しています。 http://smartandroidians.blogspot.com/2010/04/swipe-action-and-viewflipper-in-android.html

+0

これはGestureDetectorの参考情報ですが、ジェスチャー検出フローをどのように設定するかはまだ分かりませんタブでホストされているアクティビティに移動します。ジェスチャ検出器は、タブ内のアクティビティを占有しない空間内でのみ機能します。 –

関連する問題