質問編集履歴

1 誤字訂正

rvsezuki

rvsezuki score 64

2017/02/02 12:10  投稿

Android のタッチイベントとスワイプについて
現在タブが3つ設置されており、各タブをクリックすると
   そのタブに適したlistが表示されます。(listviewで)
   
   listviewを縦にスクロールすると見えない部分の項目が読み込まれます。
   次に横スワイプした時に現在のタブ番号を取得してきて右にスワイプなら現在のタブ番号プラス1 左ならマイナス1というようにしたいです。
タッチイベントで
```ここに言語を入力
@Override
   public boolean dispatchTouchEvent(final MotionEvent event) {
           return super.dispatchTouchEvent(event);
   }
   
```
   というのがあるのですが、縦スクロール,タブクリックなどは検出するのですが
   なぜか横スワイプだけは検出しません。
   横動作である
```ここに言語を入力
@Override
   public boolean onTouchEvent(MotionEvent event) {
       return mGestureDetector.onTouchEvent(event);
   }
   // タッチイベントのリスナー
   private final GestureDetector.SimpleOnGestureListener mOnGestureListener = new GestureDetector.SimpleOnGestureListener() {
       // フリックイベント
       @Override
       public boolean onFling(MotionEvent event1, MotionEvent event2, float velocityX, float velocityY) {
           try {
               // 移動距離・スピードを出力
               float distance_x = Math.abs((event1.getX() - event2.getX()));
               float velocity_x = Math.abs(velocityX);
               //textView1.setText("横の移動距離:" + distance_x + " 横の移動スピード:" + velocity_x);
               // Y軸の移動距離が大きすぎる場合
               if (Math.abs(event1.getY() - event2.getY()) > SWIPE_MAX_OFF_PATH) {
               //textView2.setText("縦の移動距離が大きすぎ");
               }
               // 開始位置から終了位置の移動距離が指定値より大きい
               // X軸の移動速度が指定値より大きい
               else if (event1.getX() - event2.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
                   //textView2.setText(getNewsRss(1, true, false));
                   //textView2.setText("右から左");
               }
               // 終了位置から開始位置の移動距離が指定値より大きい
               // X軸の移動速度が指定値より大きい
               else if (event2.getX() - event1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
                   //textView2.setText("左から右");
               }
           } catch (Exception e) {
               // TODO
           }
           return false;
       }
   };
```
を実装するためにはどうすればよいでしょうか?
  • Java

    18596 questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • XML

    887 questions

    XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

  • Android Studio

    5080 questions

    Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る