दिलचस्प पोस्ट
कार्यात्मक प्रोग्रामिंग में बिंदु मुक्त शैली क्या है? समस्या जब क्लोनिंग jQuery के यूआई datepicker AngularJS: सर्वर साइड सत्यापन के साथ एकीकरण कैसे जाँचें कि क्या स्ट्रिंग सरणी में जावास्क्रिप्ट में एक स्ट्रिंग है? दृश्य स्टूडियो में एएसएम से सी मानक पुस्तकालय फ़ंक्शन कॉल करें Ghostscript 9.01 का उपयोग कर पीडीएफ का उपयोग करना लिनक्स में एक्सएमएल डिस्केन्डेंट्स एंड एलिमेंट्स में अंतर क्या है XML DOM का उपयोग करते हुए एक्सएमएल फाइल की छपाई सामग्री $ (ट्रिगर कैसे करें)। तैयार () jQuery में? जकोको ग्रेडल प्लगइन के साथ Android परीक्षण कोड कवरेज जावा एफएफ़एक्स बच्चे से माता-पिता के पास मूल्य दो NSString ऑब्जेक्ट की तुलना करते समय "a == b" झूठा है सफारी कुकी सेट नहीं करता लेकिन आईई / एफएफ करता है एएसपी से चयनित मान पढ़ना: रेडियोबटन सूची jQuery का उपयोग करना सी # क्रमबद्ध और क्रम तुलना करें

एंड्रॉइड: बाएं स्वाइप इशारों को सही कैसे संभालना है

मैं चाहता हूं कि मेरा ऐप पहचान लेता है कि जब कोई उपयोगकर्ता फ़ोन स्क्रीन पर दाएं से बायीं ओर स्वाइप करता है

यह कैसे करना है?

Solutions Collecting From Web of "एंड्रॉइड: बाएं स्वाइप इशारों को सही कैसे संभालना है"

OnSwipeTouchListener.java :

import android.content.Context; import android.view.GestureDetector; import android.view.GestureDetector.SimpleOnGestureListener; import android.view.MotionEvent; import android.view.View; import android.view.View.OnTouchListener; public class OnSwipeTouchListener implements OnTouchListener { private final GestureDetector gestureDetector; public OnSwipeTouchListener (Context ctx){ gestureDetector = new GestureDetector(ctx, new GestureListener()); } @Override public boolean onTouch(View v, MotionEvent event) { return gestureDetector.onTouchEvent(event); } private final class GestureListener extends SimpleOnGestureListener { private static final int SWIPE_THRESHOLD = 100; private static final int SWIPE_VELOCITY_THRESHOLD = 100; @Override public boolean onDown(MotionEvent e) { return true; } @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { boolean result = false; try { float diffY = e2.getY() - e1.getY(); float diffX = e2.getX() - e1.getX(); if (Math.abs(diffX) > Math.abs(diffY)) { if (Math.abs(diffX) > SWIPE_THRESHOLD && Math.abs(velocityX) > SWIPE_VELOCITY_THRESHOLD) { if (diffX > 0) { onSwipeRight(); } else { onSwipeLeft(); } result = true; } } else if (Math.abs(diffY) > SWIPE_THRESHOLD && Math.abs(velocityY) > SWIPE_VELOCITY_THRESHOLD) { if (diffY > 0) { onSwipeBottom(); } else { onSwipeTop(); } result = true; } } catch (Exception exception) { exception.printStackTrace(); } return result; } } public void onSwipeRight() { } public void onSwipeLeft() { } public void onSwipeTop() { } public void onSwipeBottom() { } } 

उपयोग:

 imageView.setOnTouchListener(new OnSwipeTouchListener(MyActivity.this) { public void onSwipeTop() { Toast.makeText(MyActivity.this, "top", Toast.LENGTH_SHORT).show(); } public void onSwipeRight() { Toast.makeText(MyActivity.this, "right", Toast.LENGTH_SHORT).show(); } public void onSwipeLeft() { Toast.makeText(MyActivity.this, "left", Toast.LENGTH_SHORT).show(); } public void onSwipeBottom() { Toast.makeText(MyActivity.this, "bottom", Toast.LENGTH_SHORT).show(); } }); 

यह कोड बाएं और दाएं स्वाइप का पता लगाता है, एपीआई कॉलों को बहिष्कृत करता है, और पहले के उत्तरों के अलावा अन्य विविध सुधार भी करता है।

 /** * Detects left and right swipes across a view. */ public class OnSwipeTouchListener implements OnTouchListener { private final GestureDetector gestureDetector; public OnSwipeTouchListener(Context context) { gestureDetector = new GestureDetector(context, new GestureListener()); } public void onSwipeLeft() { } public void onSwipeRight() { } public boolean onTouch(View v, MotionEvent event) { return gestureDetector.onTouchEvent(event); } private final class GestureListener extends SimpleOnGestureListener { private static final int SWIPE_DISTANCE_THRESHOLD = 100; private static final int SWIPE_VELOCITY_THRESHOLD = 100; @Override public boolean onDown(MotionEvent e) { return true; } @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { float distanceX = e2.getX() - e1.getX(); float distanceY = e2.getY() - e1.getY(); if (Math.abs(distanceX) > Math.abs(distanceY) && Math.abs(distanceX) > SWIPE_DISTANCE_THRESHOLD && Math.abs(velocityX) > SWIPE_VELOCITY_THRESHOLD) { if (distanceX > 0) onSwipeRight(); else onSwipeLeft(); return true; } return false; } } } 

इसे इस तरह प्रयोग करें:

 view.setOnTouchListener(new OnSwipeTouchListener(context) { @Override public void onSwipeLeft() { // Whatever } }); 

अगर आपको यहां कुछ बदलावों को क्लिक करने की प्रक्रिया की आवश्यकता होती है:

 public class OnSwipeTouchListener implements OnTouchListener { private final GestureDetector gestureDetector = new GestureDetector(new GestureListener()); public boolean onTouch(final View v, final MotionEvent event) { return gestureDetector.onTouchEvent(event); } private final class GestureListener extends SimpleOnGestureListener { private static final int SWIPE_THRESHOLD = 100; private static final int SWIPE_VELOCITY_THRESHOLD = 100; @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { boolean result = false; try { float diffY = e2.getY() - e1.getY(); float diffX = e2.getX() - e1.getX(); if (Math.abs(diffX) > Math.abs(diffY)) { if (Math.abs(diffX) > SWIPE_THRESHOLD && Math.abs(velocityX) > SWIPE_VELOCITY_THRESHOLD) { if (diffX > 0) { result = onSwipeRight(); } else { result = onSwipeLeft(); } } } else { if (Math.abs(diffY) > SWIPE_THRESHOLD && Math.abs(velocityY) > SWIPE_VELOCITY_THRESHOLD) { if (diffY > 0) { result = onSwipeBottom(); } else { result = onSwipeTop(); } } } } catch (Exception exception) { exception.printStackTrace(); } return result; } } public boolean onSwipeRight() { return false; } public boolean onSwipeLeft() { return false; } public boolean onSwipeTop() { return false; } public boolean onSwipeBottom() { return false; } } 

और नमूना उपयोग:

  background.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { toggleSomething(); } }); background.setOnTouchListener(new OnSwipeTouchListener() { public boolean onSwipeTop() { Toast.makeText(MainActivity.this, "top", Toast.LENGTH_SHORT).show(); return true; } public boolean onSwipeRight() { Toast.makeText(MainActivity.this, "right", Toast.LENGTH_SHORT).show(); return true; } public boolean onSwipeLeft() { Toast.makeText(MainActivity.this, "left", Toast.LENGTH_SHORT).show(); return true; } public boolean onSwipeBottom() { Toast.makeText(MainActivity.this, "bottom", Toast.LENGTH_SHORT).show(); return true; } }); 

जब आप किसी स्क्रॉल व्यू के अंदर ज़ोर से मारना इशारों का उपयोग करना चाहते हैं, तो मामले के लिए मिरक के जवाब पर विस्तार करना। डिफ़ॉल्ट रूप से स्क्रॉल दृश्य के लिए टच श्रोता निष्क्रिय हो जाता है और इसलिए स्क्रॉल कार्रवाई नहीं होती है। इसे ठीक करने के लिए आपको Activity के dispatchTouchEvent विधि को ओवरराइड करना होगा dispatchTouchEvent अपने स्वयं के श्रोता के साथ कार्य पूरा करने के बाद इस पद्धति का उत्तराधिकृत संस्करण वापस करना होगा।

Mirek के कोड में कुछ संशोधनों को करने के लिए: I gestureDetector में gestureDetector लिए एक गेटर OnSwipeTouchListener

 public GestureDetector getGestureDetector(){ return gestureDetector; } 

कक्षा-वाइड फ़ील्ड के रूप में गतिविधि के अंदर OnSwipeTouchListener को घोषित करें

 OnSwipeTouchListener onSwipeTouchListener; 

इसके अनुसार उपयोग कोड को संशोधित करें:

 onSwipeTouchListener = new OnSwipeTouchListener(MyActivity.this) { public void onSwipeTop() { Toast.makeText(MyActivity.this, "top", Toast.LENGTH_SHORT).show(); } public void onSwipeRight() { Toast.makeText(MyActivity.this, "right", Toast.LENGTH_SHORT).show(); } public void onSwipeLeft() { Toast.makeText(MyActivity.this, "left", Toast.LENGTH_SHORT).show(); } public void onSwipeBottom() { Toast.makeText(MyActivity.this, "bottom", Toast.LENGTH_SHORT).show(); } }); imageView.setOnTouchListener(onSwipeTouchListener); 

और Activity अंदर dispatchTouchEvent विधि को ओवरराइड करें:

 @Override public boolean dispatchTouchEvent(MotionEvent ev){ swipeListener.getGestureDetector().onTouchEvent(ev); return super.dispatchTouchEvent(ev); } 

अब दोनों स्क्रॉल और ज़ोर से मारना कार्यों को काम करना चाहिए।

Click Listener , DoubleClick Listener , OnLongPress Listener , Swipe Left , Swipe Right Swipe Up , Swipe Up , एकल View पर Swipe Down करने के लिए आपको setOnTouchListener करने की आवश्यकता है। अर्थात,

 view.setOnTouchListener(new OnSwipeTouchListener(MainActivity.this) { @Override public void onClick() { super.onClick(); // your on click here } @Override public void onDoubleClick() { super.onDoubleClick(); // your on onDoubleClick here } @Override public void onLongClick() { super.onLongClick(); // your on onLongClick here } @Override public void onSwipeUp() { super.onSwipeUp(); // your swipe up here } @Override public void onSwipeDown() { super.onSwipeDown(); // your swipe down here. } @Override public void onSwipeLeft() { super.onSwipeLeft(); // your swipe left here. } @Override public void onSwipeRight() { super.onSwipeRight(); // your swipe right here. } }); } 

इसके लिए आपको OnSwipeTouchListener वर्ग की आवश्यकता OnSwipeTouchListener जो OnTouchListener लागू OnTouchListener

 public class OnSwipeTouchListener implements View.OnTouchListener { private GestureDetector gestureDetector; public OnSwipeTouchListener(Context c) { gestureDetector = new GestureDetector(c, new GestureListener()); } public boolean onTouch(final View view, final MotionEvent motionEvent) { return gestureDetector.onTouchEvent(motionEvent); } private final class GestureListener extends GestureDetector.SimpleOnGestureListener { private static final int SWIPE_THRESHOLD = 100; private static final int SWIPE_VELOCITY_THRESHOLD = 100; @Override public boolean onDown(MotionEvent e) { return true; } @Override public boolean onSingleTapUp(MotionEvent e) { onClick(); return super.onSingleTapUp(e); } @Override public boolean onDoubleTap(MotionEvent e) { onDoubleClick(); return super.onDoubleTap(e); } @Override public void onLongPress(MotionEvent e) { onLongClick(); super.onLongPress(e); } // Determines the fling velocity and then fires the appropriate swipe event accordingly @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { boolean result = false; try { float diffY = e2.getY() - e1.getY(); float diffX = e2.getX() - e1.getX(); if (Math.abs(diffX) > Math.abs(diffY)) { if (Math.abs(diffX) > SWIPE_THRESHOLD && Math.abs(velocityX) > SWIPE_VELOCITY_THRESHOLD) { if (diffX > 0) { onSwipeRight(); } else { onSwipeLeft(); } } } else { if (Math.abs(diffY) > SWIPE_THRESHOLD && Math.abs(velocityY) > SWIPE_VELOCITY_THRESHOLD) { if (diffY > 0) { onSwipeDown(); } else { onSwipeUp(); } } } } catch (Exception exception) { exception.printStackTrace(); } return result; } } public void onSwipeRight() { } public void onSwipeLeft() { } public void onSwipeUp() { } public void onSwipeDown() { } public void onClick() { } public void onDoubleClick() { } public void onLongClick() { } } 

SwipeListView का उपयोग करें और इसे आपके लिए इशारे का पता लगाने में सक्षम करें।

स्क्रीनशॉट

एक onClick को भी जोड़ने के लिए, यहां मैंने क्या किया है

 .... // in OnSwipeTouchListener class private final class GestureListener extends SimpleOnGestureListener { .... // normal GestureListener code @Override public boolean onSingleTapConfirmed(MotionEvent e) { onClick(); // my method return super.onSingleTapConfirmed(e); } } // end GestureListener class public void onSwipeRight() { } public void onSwipeLeft() { } public void onSwipeTop() { } public void onSwipeBottom() { } public void onClick(){ } // as normal @Override public boolean onTouch(View v, MotionEvent event) { return gestureDetector.onTouchEvent(event); } } // end OnSwipeTouchListener class 

मैं टुकड़ों का उपयोग कर रहा हूं, इसलिए संदर्भ के लिए getActivity () का उपयोग कर रहा हूँ इस तरह मैंने इसे लागू किया – और यह काम करता है।


 myLayout.setOnTouchListener(new OnSwipeTouchListener(getActivity()) { public void onSwipeTop() { Toast.makeText(getActivity(), "top", Toast.LENGTH_SHORT).show(); } public void onSwipeRight() { Toast.makeText(getActivity(), "right", Toast.LENGTH_SHORT).show(); } public void onSwipeLeft() { Toast.makeText(getActivity(), "left", Toast.LENGTH_SHORT).show(); } public void onSwipeBottom() { Toast.makeText(getActivity(), "bottom", Toast.LENGTH_SHORT).show(); } public void onClick(){ Toast.makeText(getActivity(), "clicked", Toast.LENGTH_SHORT).show(); } }); 

@ एडवर्ड ब्रेय की विधि महान काम करती है अगर कोई भी OnSwipeTouchListener लिए आयात और कॉपी पेस्ट करना OnSwipeTouchListener , तो वे यहां हैं:

  import android.content.Context; import android.view.GestureDetector; import android.view.GestureDetector.SimpleOnGestureListener; import android.view.MotionEvent; import android.view.View; import android.view.View.OnTouchListener; 

कुछ मामूली अपडेट की आवश्यकता है चर ऑटूच विधि में बेमेल हैं, और अपवाद क्लास आयात नहीं किया जाता है। फ़्रीलिंग () से झूठी वापसी करने के लिए और अधिक मायने रखता है, एक वैरिएबल की शुरुआत करने के बजाय, उसे मान निर्दिष्ट करना, इसके साथ कुछ नहीं करना और इसे वापस करना।

टच विधि के कुछ भाग गलत हैं। देखिए / गतिएवेंट को एक चर कड़ी चोट के लिए हल नहीं किया जा सकता

एक सहायक टिप जो मुझे कुछ समय बचा लेती है और मुझे उम्मीद है कि दूसरों की मदद कर सकते हैं: जब आप इस पद्धति का उपयोग करते हैं, तो आप केवल अपने ओन्स्वाइप टच लिस्टनर क्लास में "उपकरण" टैग जोड़ना चाहते हैं। आपकी गतिविधि और दृश्य इसे लागू नहीं कर रहे हैं वे केवल आपकी कक्षा का लाभ उठा रहे हैं जो पहले से ही करता है!

मीरक के लिए +1 क्योंकि उसका कोड अभी भी मुझे दिया था जो मुझे मेरे लिए आवश्यक था 🙂

@ मिर्क रुसिन का थोड़ा सुधार उत्तर दें और अब आप मल्टीटाच swipes का पता लगा सकते हैं। यह कोड Kotlin पर है:

 class OnSwipeTouchListener(ctx: Context, val onGesture: (gestureCode: Int) -> Unit) : OnTouchListener { private val SWIPE_THRESHOLD = 200 private val SWIPE_VELOCITY_THRESHOLD = 200 private val gestureDetector: GestureDetector var fingersCount = 0 fun resetFingers() { fingersCount = 0 } init { gestureDetector = GestureDetector(ctx, GestureListener()) } override fun onTouch(v: View, event: MotionEvent): Boolean { if (event.pointerCount > fingersCount) { fingersCount = event.pointerCount } return gestureDetector.onTouchEvent(event) } private inner class GestureListener : SimpleOnGestureListener() { override fun onDown(e: MotionEvent): Boolean { return true } override fun onFling(e1: MotionEvent, e2: MotionEvent, velocityX: Float, velocityY: Float): Boolean { var result = false try { val diffY = e2.y - e1.y val diffX = e2.x - e1.x if (Math.abs(diffX) > Math.abs(diffY)) { if (Math.abs(diffX) > SWIPE_THRESHOLD && Math.abs(velocityX) > SWIPE_VELOCITY_THRESHOLD) { if (diffX > 0) { val gesture = when (fingersCount) { 1 -> Gesture.SWIPE_RIGHT 2 -> Gesture.TWO_FINGER_SWIPE_RIGHT 3 -> Gesture.THREE_FINGER_SWIPE_RIGHT else -> -1 } if (gesture > 0) { onGesture.invoke(gesture) } } else { val gesture = when (fingersCount) { 1 -> Gesture.SWIPE_LEFT 2 -> Gesture.TWO_FINGER_SWIPE_LEFT 3 -> Gesture.THREE_FINGER_SWIPE_LEFT else -> -1 } if (gesture > 0) { onGesture.invoke(gesture) } } resetFingers() } } else if (Math.abs(diffY) > SWIPE_THRESHOLD && Math.abs(velocityY) > SWIPE_VELOCITY_THRESHOLD) { if (diffY > 0) { val gesture = when (fingersCount) { 1 -> Gesture.SWIPE_DOWN 2 -> Gesture.TWO_FINGER_SWIPE_DOWN 3 -> Gesture.THREE_FINGER_SWIPE_DOWN else -> -1 } if (gesture > 0) { onGesture.invoke(gesture) } } else { val gesture = when (fingersCount) { 1 -> Gesture.SWIPE_UP 2 -> Gesture.TWO_FINGER_SWIPE_UP 3 -> Gesture.THREE_FINGER_SWIPE_UP else -> -1 } if (gesture > 0) { onGesture.invoke(gesture) } } resetFingers() } result = true } catch (exception: Exception) { exception.printStackTrace() } return result } }} 

जहां संकेत। SWIPE_RIGHT और अन्य इशारा के पूर्णांक इंडेनिटेनिटेन्ट हैं, जो कि मैं अपनी गतिविधि में बाद में जेस्चर का पता लगाने के लिए उपयोग कर रहा हूं:

 rootView?.setOnTouchListener(OnSwipeTouchListener(this, { gesture -> log(Gesture.parseName(this, gesture)) })) 

तो आप यहां इशारेर देख रहे हैं कि एक इंटिजर वेरिएबल है जो पहले से पारित मूल्य रखता है I

@ मिर्क रस्किन का जवाब बहुत अच्छा है। लेकिन, वहाँ एक छोटा बग है, और ठीक requried है –

 public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { boolean result = false; try { float diffY = e2.getY() - e1.getY(); float diffX = e2.getX() - e1.getX(); if (Math.abs(diffX) > Math.abs(diffY)) { if (Math.abs(diffX) > SWIPE_THRESHOLD && Math.abs(velocityX) > SWIPE_VELOCITY_THRESHOLD) { if (diffX > 0) { if (getOnSwipeListener() != null) { getOnSwipeListener().onSwipeRight(); } } else { if (getOnSwipeListener() != null) { getOnSwipeListener().onSwipeLeft(); } } result = true; } } else if (Math.abs(diffY) > SWIPE_THRESHOLD && Math.abs(velocityY) > SWIPE_VELOCITY_THRESHOLD) { if (diffY > 0) { if (getOnSwipeListener() != null) { getOnSwipeListener().onSwipeBottom(); } } else { if (getOnSwipeListener() != null) { getOnSwipeListener().onSwipeTop(); } } result = true; } 

क्या अंतर है? हम परिणाम = सही सेट करते हैं, तभी यदि हमने यह जाँच लिया है कि सभी रेग्युरियंटमेंट (दोनों SWIPE_THRESHOLD और SWIPE_VELOCITY_THRESHOLD ठीक हैं)। यह महत्वपूर्ण है अगर हम कड़ी चोट को छोड़ दें, अगर कुछ गारंटी हासिल नहीं की जाती है, और हमें ऑन-स्वाद टच एलिसर की टच इवेंट पद्धति में क्या करना है!

जेस्चर दिशा का पता लगाने के लिए यहां सरल एंड्रॉइड कोड है

MainActivity.java और activity_main.xml , निम्न कोड लिखें:

MainActivity.java

 import java.util.ArrayList; import android.app.Activity; import android.gesture.Gesture; import android.gesture.GestureLibraries; import android.gesture.GestureLibrary; import android.gesture.GestureOverlayView; import android.gesture.GestureOverlayView.OnGesturePerformedListener; import android.gesture.GestureStroke; import android.gesture.Prediction; import android.os.Bundle; import android.widget.Toast; public class MainActivity extends Activity implements OnGesturePerformedListener { GestureOverlayView gesture; GestureLibrary lib; ArrayList<Prediction> prediction; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); lib = GestureLibraries.fromRawResource(MainActivity.this, R.id.gestureOverlayView1); gesture = (GestureOverlayView) findViewById(R.id.gestureOverlayView1); gesture.addOnGesturePerformedListener(this); } @Override public void onGesturePerformed(GestureOverlayView overlay, Gesture gesture) { ArrayList<GestureStroke> strokeList = gesture.getStrokes(); // prediction = lib.recognize(gesture); float f[] = strokeList.get(0).points; String str = ""; if (f[0] < f[f.length - 2]) { str = "Right gesture"; } else if (f[0] > f[f.length - 2]) { str = "Left gesture"; } else { str = "no direction"; } Toast.makeText(getApplicationContext(), str, Toast.LENGTH_LONG).show(); } } 

activity_main.xml

 <android.gesture.GestureOverlayView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:android1="http://schemas.android.com/apk/res/android" xmlns:android2="http://schemas.android.com/apk/res/android" android:id="@+id/gestureOverlayView1" android:layout_width="match_parent" android:layout_height="match_parent" android1:orientation="vertical" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Draw gesture" android:textAppearance="?android:attr/textAppearanceMedium" /> </android.gesture.GestureOverlayView> 

आपको उन जटिल गणना की ज़रूरत नहीं है बस GestureDetector का उपयोग अपने OnGestureListener GestureDetector में OnGestureListener अंदर onFling :

  @Override public boolean onFling(final MotionEvent e1, final MotionEvent e2, final float velocityX, final float velocityY) { if ((velocityX * velocityX) > (velocityY * velocityY)) { if (velocityX < 0) { Log.i("TAG", "swipe left"); } else { Log.i("TAG", "swipe right"); } } else { if (velocityY < 0) { Log.i("TAG", "swipe up"); } else { Log.i("TAG", "swipe down"); } } return false; } 

अंतिम निहितार्थ केवल इसके साथ कार्य करता है:

  @Override public boolean onDown(MotionEvent e) { return true; } 

यदि आप कुछ बटन को क्रिया के साथ प्रदर्शित करना चाहते हैं, जब एक सूची आइटम स्वाइप है, तो इंटरनेट पर ऐसे कई लाइब्रेरी हैं जो इस व्यवहार में हैं मैंने लाइब्रेरी को कार्यान्वित किया जो मुझे इंटरनेट पर मिला और मैं बहुत संतुष्ट हूं। यह प्रयोग करने में बहुत आसान है और बहुत तेज़ है मैंने मूल पुस्तकालय में सुधार किया और मैंने आइटम क्लिक के लिए एक नया क्लिक श्रोता जोड़ा। इसके अलावा मैंने फ़ॉन्ट भयानक लाइब्रेरी ( http://fortawesome.github.io/Font-Awesome/ ) को जोड़ा और अब आप बस एक नया आइटम शीर्षक जोड़ सकते हैं और आइकन का आइकन भयानक फ़ॉन्ट निर्दिष्ट कर सकते हैं।

यहां गिथूब लिंक है

 public class TranslatorSwipeTouch implements OnTouchListener { private String TAG="TranslatorSwipeTouch"; @SuppressWarnings("deprecation") private GestureDetector detector=new GestureDetector(new TranslatorGestureListener()); @Override public boolean onTouch(View view, MotionEvent event) { return detector.onTouchEvent(event); } private class TranslatorGestureListener extends SimpleOnGestureListener { private final int GESTURE_THRESHOULD=100; private final int GESTURE_VELOCITY_THRESHOULD=100; @Override public boolean onDown(MotionEvent e) { return true; } @Override public boolean onFling(MotionEvent event1,MotionEvent event2,float velocityx,float velocityy) { try { float diffx=event2.getX()-event1.getX(); float diffy=event2.getY()-event1.getY(); if(Math.abs(diffx)>Math.abs(diffy)) { if(Math.abs(diffx)>GESTURE_THRESHOULD && Math.abs(velocityx)>GESTURE_VELOCITY_THRESHOULD) { if(diffx>0) { onSwipeRight(); } else { onSwipeLeft(); } } } else { if(Math.abs(diffy)>GESTURE_THRESHOULD && Math.abs(velocityy)>GESTURE_VELOCITY_THRESHOULD) { if(diffy>0) { onSwipeBottom(); } else { onSwipeTop(); } } } } catch(Exception e) { Log.d(TAG, ""+e.getMessage()); } return false; } public void onSwipeRight() { //Toast.makeText(this.getClass().get, "swipe right", Toast.LENGTH_SHORT).show(); Log.i(TAG, "Right"); } public void onSwipeLeft() { Log.i(TAG, "Left"); //Toast.makeText(MyActivity.this, "swipe left", Toast.LENGTH_SHORT).show(); } public void onSwipeTop() { Log.i(TAG, "Top"); //Toast.makeText(MyActivity.this, "swipe top", Toast.LENGTH_SHORT).show(); } public void onSwipeBottom() { Log.i(TAG, "Bottom"); //Toast.makeText(MyActivity.this, "swipe bottom", Toast.LENGTH_SHORT).show(); } } } 

कोटलिन में एडवर्ड ब्रै के जवाब का उपयोग

  view.setOnTouchListener(object: OnSwipeTouchListener(this) { override fun onSwipeLeft() { super.onSwipeLeft() } override fun onSwipeRight() { super.onSwipeRight() } } )