タイトルに記載されているように、アプリにはScrollView
とGestureDetector
もあります。 ScrollViewのタッチイベントの外では、左から右、右から左のようなスワイプアクションを処理するGestureDetectorがあります。彼らはすべてうまくいっています。ScrollViewでのGestureLibraryの使用
今、GestureLibrary
を追加したいと思います。私はさまざまなソースを見て、何らかの形で適切に追加しました。私は(黄色の線)を望んでいたとして、それは図面の
<android.gesture.GestureOverlayView
android:id="@+id/gOverlay"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<ScrollView
android:id="@+id/content_scroll"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scrollbars="none">
</ScrollView>
<!-- Other views -->
</android.gesture.GestureOverlayView>
が、それは任意のメソッドをトリガいない:単純に、レイアウトは、このように見ています。ここで私はOnGesturePerformedListener
を実装する方法:
/*
* Gestures
*/
gLibrary = GestureLibraries.fromRawResource(this, R.raw.gestures);
if (!gLibrary.load()) { finish(); }
GestureOverlayView gestureOverlayView = (GestureOverlayView) findViewById(R.id.gOverlay);
gestureOverlayView.addOnGesturePerformedListener(gestureListener);
そして、ここではgestureListener
次のとおりです。
private OnGesturePerformedListener gestureListener = new OnGesturePerformedListener() {
public void onGesturePerformed(GestureOverlayView overlay, Gesture gesture) {
ArrayList<Prediction> predictions = gLibrary.recognize(gesture);
if (predictions.size() > 1) {
for(Prediction prediction: predictions){
Log.d("Test", "Looking for gestures");
}
}
}
};
すべてですこと。ウォールでは、私はこのアクティビティでScrollViewがなく、うまく動作しているこのソースコードを試してみました。それは、検出器を用いてどのようにアプリですので
最後に、私は、それがGestureDetectorについてですよく分からない:
public boolean dispatchTouchEvent(MotionEvent ev) {
if (detector != null) {
if (detector.onTouchEvent(ev)) {
return true;
}
}
return super.dispatchTouchEvent(ev);
}
そして、私のSwipeDetector
:私のアプローチと間違って何
private class SwipeDetector extends SimpleOnGestureListener {
private static final int SWIPE_MIN_DISTANCE = 120;
private static final int SWIPE_MAX_OFF_PATH = 250;
private static final int SWIPE_THRESHOLD_VELOCITY = 200;
public boolean onFling(android.view.MotionEvent e1, android.view.MotionEvent e2, float velocityX, float velocityY) {
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) { return false; }
if(e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { filterButton.performClick();return true; }
return false;
}
}
?
「検出器」とは何ですか?それはSwipeDetectorオブジェクトですか? –
@RahulHawge、 "検出器"はGestureDetectorオブジェクトです。 – strizzwald