के साथ जेस्चर लाइब्रेरी का उपयोग करना जैसा कि मैंने शीर्षक पर उल्लेख किया है, ऐप में ScrollView
और GestureDetector
भी है। स्क्रॉलव्यू की टच इवेंट्स के बाहर, जेस्चरडिटेक्टर हैंडलिंग स्वाइप क्रियाएं जैसे बाएं से दाएं और दाएं से बाएं। वे सभी अच्छी तरह से काम कर रहे हैं।स्क्रॉल व्यू
अब मैं 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");
}
}
}
};
सब है कि। दीवार से, मैंने इस स्रोत कोड को विभिन्न गतिविधि में करने की कोशिश की जिसमें स्क्रॉलव्यू नहीं है और ठीक काम कर रहा है।
अंत में, मैं, यकीन है कि यह 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;
}
}
मेरे दृष्टिकोण के साथ गलत क्या है?
वह "डिटेक्टर" क्या है? क्या यह स्वाइप डिटेक्टर ऑब्जेक्ट है? –
@RahulHawge, "डिटेक्टर" GestureDetector ऑब्जेक्ट है। – strizzwald