8

मैं एंड्रॉइड आईसीएस और उससे ऊपर की अधिसूचनाओं के लिए मौजूद जेस्चर को "स्वाइप करने के लिए बाएं से दाएं स्वाइप करें" को लागू करने की कोशिश कर रहा हूं। मेरे पास मेरे आवेदन में एक सूचीदृश्य है। मेरे पास इशारा डिटेक्टर काम कर रहा है। लेकिन जब मैं किसी विशेष सूची आइटम पर बाएं से दाएं स्वाइप करता हूं, तो मैं चाहता हूं कि आइटम मेरी उंगली के साथ आगे बढ़े। जब मैं अपनी अंगुली को एक निश्चित बिंदु से आगे ले जाता हूं, तो केवल आइटम को खुद को हटा देना चाहिए। ऑनफलिंग() विधि मैंने वर्तमान में यह हासिल नहीं किया है।एंड्रॉइड "हटाने के लिए बाएं से दाएं स्वाइप करें", सूची आइटम पर इशारा, आईसीएस स्टाइल

आइटम को मेरी उंगली के साथ आगे बढ़ने के लिए ऑनफलिंग() विधि को कैसे संशोधित कर सकता हूं?

मेरे इशारा श्रोता वर्ग

class GestureListener extends SimpleOnGestureListener { 
     private static final int SWIPE_MIN_DISTANCE = 50; 
     private static final int SWIPE_MAX_OFF_PATH = 100; 
     private static final int SWIPE_THRESHOLD_VELOCITY = 25; 

     private MotionEvent mLastOnDownEvent = null; 

     @Override 
     public boolean onDown(MotionEvent e) { 
      mLastOnDownEvent = e; 
      return super.onDown(e); 
     } 

     @Override 
     public boolean onSingleTapUp(MotionEvent e) { 
      // TODO Auto-generated method stub 
      Toast.makeText(getApplicationContext(), "On Single TAP up ", Toast.LENGTH_SHORT).show(); 
      return super.onSingleTapUp(e); 
     } 

     @Override 
     public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, 
       float velocityY) { 
      if (e1 == null) { 
       e1 = mLastOnDownEvent; 
      } 
      if (e1 == null || e2 == null) { 
       return false; 
      } 

      float dX = e2.getX() - e1.getX(); 
      float dY = e1.getY() - e2.getY(); 

      if (Math.abs(dY) < SWIPE_MAX_OFF_PATH 
        && Math.abs(velocityX) >= SWIPE_THRESHOLD_VELOCITY 
        && Math.abs(dX) >= SWIPE_MIN_DISTANCE) { 
       if (dX > 0) { 
        int position = tasks.pointToPosition((int) e1.getX(), 
          (int) e1.getY()); 

        int _id = (int) tasks.getItemIdAtPosition(position); 
        databaseConnector.deleteContact(_id); 

        new DeleteRow(_id, contactAdapter, getApplicationContext()); 
       contactAdapter.notifyDataSetChanged(); 


        Toast.makeText(getApplicationContext(), 
          "Right Swipe" + _id, Toast.LENGTH_SHORT).show(); 
       } else { 

        Toast.makeText(getApplicationContext(), "Left Swipe", 
          Toast.LENGTH_SHORT).show(); 
       } 
       return true; 
      } 

      return false; 
     } 
+1

आपने पहले से ऐसा नहीं किया है, तो आप रोमन Nurik के कार्यान्वयन पर नज़र करना चाह सकते हैं // प्लस .google.com/113735310430199015092/पोस्ट/Fgo1p5uWZLu या जेन व्हार्टन का बैकपोर्ट नाइनऑल्ड एंड्रॉइड का उपयोग करके: https://github.com/JakeWharton/SwipeToDismissNOA – CommonsWare

उत्तर

5

यदि आप कार्यक्षमता के इस प्रकार लागू करना चाहते हैं GitHub पर टुकड़ा खारिज करने के लिए रोमन Nurik की कड़ी चोट पर एक नजर है चाहिए। आप इसे here पा सकते हैं।

+0

इससे मदद मिली! धन्यवाद – newbie

+0

स्वाइप-टू-डिसमिस (टिम रोस) के लेखक ने एन्हांस्ड लिस्ट व्यू नामक एक नया संस्करण प्रकाशित किया है: https://github.com/timroes/EnhancedListView। आप Play Store से डेमो भी डाउनलोड कर सकते हैं। – Samoht

+0

मैं इसका उपयोग कर रहा हूं लेकिन सूचीदृश्य आइटम आसानी से स्लाइड नहीं कर रहा है मेरा मतलब है कि यदि उपयोगकर्ता थोड़ा नीचे स्वाइप करता है तो कार्रवाई को स्वाइप नहीं किया जाता है। किसी भी मदद की सराहना की है। अग्रिम में धन्यवाद – Awadesh

2

आप एक और अधिक हाल के समर्थन पुस्तकालय का उपयोग करने में सक्षम हैं, RecyclerViewItemTouchHelper के रूप में कुछ में निर्मित कार्यक्षमता और onSwiped विधि है कि आप वांछित व्यवहार दे सकते है।

यह बहुत ही मददगार जवाब के अनुसार RecyclerView समर्थन पुस्तकालय की v22.2.0 में शुरू का समर्थन करने वाले: https:: https://stackoverflow.com/a/30601554/1518546