2012-02-28 18 views
3

私のアプリでふらつきジェスチャーの検出に問題があります。 私のレイアウトは、GridView、数組のTextViewとボタンで構成されています。Android - GridView - GestureDetectorが機能しません

IはOnGestureListener実装:

public class MyActivity extends Activity implements OnGestureListener{ 
private GestureDetector myGesture ; 

を次にOnCreate関数で:

myGesture = new GestureDetector(this); 

及びオーバーライドされたメソッド:

@Override 
public boolean onTouchEvent(MotionEvent event){ 
    return myGesture.onTouchEvent(event); 
} 

}

@Override 
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, 
     float velocityY) { 
    // TODO Auto-generated method stub 
    try { 
     if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH) 
      return false; 
     if(e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { 
      //right to left fling 
     } else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { 
      //left to right fling 
     } 
    } catch (Exception e) { 
     // nothing 
    } 
    return false; 
} 

これは実際にはうまくいくが、GridViewでは機能しません。 GridViewの外でどこでも実行します。 GridViewには全く反応がありません。 私は文字通り何も考えていません。どうしたらいいですか?事前に助けてくれてありがとう。

+0

グリッドビュー(または内部のビュー)にイベントを消費しているonClickListenerがありますか? – ByteMe

+0

はい、GridViewのセルはonClickListenerを持っています – ThunderSS

答えて

1

私がしようとした方法が、それは単に動作しませんでしたし、誰もが、なぜ知らないので、私は実際には、別の解決策を見つけました。代わりにGestureOverlayViewを使用しました。ジェスチャーライブラリに2回のスワイプジェスチャーを追加するだけでした。

+1

こんにちは、私にGestureOverlayViewの例を教えてくださいありがとう –

1

Afaikも自動的にScrollView機能を追加し、ジェスチャ検出をインターセプトします。その動作を無効にし、フリンジ検出を追加する独自のGridViewを実装する必要があります。 stackoverflowや他のサイトでScrollViewの例がいくつかあります。同様の方法でGridViewを実行してください。

+0

非常に速い応答に感謝します。私はGridViewを拡張する新しいクラスを追加し、自分のアクティビティのすべてのGridViewをGestureGridView(新しいクラス)に変更しましたが、今はClassCastException:android.widget.Gridviewを取得します。すべてのGridViewをGestureGridViewに変更してはいけないと思いますか?その後は何も起こりません。私はあらゆる助けに感謝します。 – ThunderSS

+0

私は上記のエラーの解決策を見つけたと思う - 私は単に.xmlファイルを変更しなかった。しかし、私はそれを行った後、2つの新しいエラーがあります - 最初はandroid.view.InflateException:バイナリXMLファイル行#44:クラスpl.flamis.Kalendarz $ GestureGridViewを膨張させる際のエラーと2番目のエラー:java.lang.NoSuchMethodException: GestureGridView(コンテキスト、AttributeSet)。何か案は? – ThunderSS

+0

オーバーライドコンストラクタを作成していない可能性があります。 –

2

イベントが消費されたときに、あなたのonFlingでtrueを返しますか?

@Override 
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, 
     float velocityY) { 
    // TODO Auto-generated method stub 
    try { 
     if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH) 
      return false; 
     if(e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { 
      //right to left fling 
     } else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { 
      //left to right fling 
     } 
     return true; 
    } catch (Exception e) { 
     // nothing 
    } 
    return false; 
} 
+0

私は実際にはしませんでしたが、それを追加しても何も変わりませんでした。とにかく答えてくれてありがとう! – ThunderSS

関連する問題