2013-07-08 12 views
26

क्या कोई सूची दृश्य आइटम बाईं ओर स्वाइप करने और सही स्वाइप करने का जवाब दे सकता है?सूची दृश्य आइटम बाएं स्वाइप करें और दाएं स्वाइप करें?

यदि हां, तो विभिन्न उद्देश्यों को खोलने के लिए एंड्रॉइड स्वाइप बाएं या दाएं स्क्रॉलिंग कैसे लागू करें? मैं डिफ़ॉल्ट रूप से एंड्रॉइड में संपर्क दृश्य पर कॉल फोन या संदेश की तरह चाहता हूं।

धन्यवाद

+0

हो सकता है इस में मदद मिलेगी: http://stackoverflow.com/questions/4139288/android-how-to-handle राइट-टू-बाएं-स्वाइप-जेस्चर – g00dy

+1

कृपया ध्यान दें कि आप जिन संपर्कों के बारे में बात कर रहे हैं, वे केवल सैमसंग फोन पर लागू होते हैं। –

उत्तर

52

इस प्रयास करें:

navigaList.setOnTouchListener(swipeDetector); 
navigaList.setOnItemClickListener(listener); 

OnItemClickListener listener = new OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> arg0, View arg1, int position, 
          long arg3) { 
     if(swipeDetector.swipeDetected()) { 
      if(swipeDetector.getAction() == Action.RL) { 

      } else { 

      } 
     }   
    }; 

SwipeDetector.java

public class SwipeDetector implements View.OnTouchListener { 

    public static enum Action { 
     LR, // Left to Right 
     RL, // Right to Left 
     TB, // Top to bottom 
     BT, // Bottom to Top 
     None // when no action was detected 
    } 

    private static final String logTag = "SwipeDetector"; 
    private static final int MIN_DISTANCE = 100; 
    private float downX, downY, upX, upY; 
    private Action mSwipeDetected = Action.None; 

    public boolean swipeDetected() { 
     return mSwipeDetected != Action.None; 
    } 

    public Action getAction() { 
     return mSwipeDetected; 
    } 

    public boolean onTouch(View v, MotionEvent event) { 
     switch (event.getAction()) { 
     case MotionEvent.ACTION_DOWN: { 
      downX = event.getX(); 
      downY = event.getY(); 
      mSwipeDetected = Action.None; 
      return false; // allow other events like Click to be processed 
     } 
     case MotionEvent.ACTION_MOVE: { 
      upX = event.getX(); 
      upY = event.getY(); 

      float deltaX = downX - upX; 
      float deltaY = downY - upY; 

      // horizontal swipe detection 
      if (Math.abs(deltaX) > MIN_DISTANCE) { 
       // left or right 
       if (deltaX < 0) { 
        Logger.show(Log.INFO,logTag, "Swipe Left to Right"); 
        mSwipeDetected = Action.LR; 
        return true; 
       } 
       if (deltaX > 0) { 
        Logger.show(Log.INFO,logTag, "Swipe Right to Left"); 
        mSwipeDetected = Action.RL; 
        return true; 
       } 
      } else 

       // vertical swipe detection 
       if (Math.abs(deltaY) > MIN_DISTANCE) { 
        // top or down 
        if (deltaY < 0) { 
         Logger.show(Log.INFO,logTag, "Swipe Top to Bottom"); 
         mSwipeDetected = Action.TB; 
         return false; 
        } 
        if (deltaY > 0) { 
         Logger.show(Log.INFO,logTag, "Swipe Bottom to Top"); 
         mSwipeDetected = Action.BT; 
         return false; 
        } 
       } 
      return true; 
     } 
     } 
     return false; 
    } 
} 
+11

आप सभी स्रोत कोड क्यों साझा नहीं करते? – mehmetakifalp

0

मुझे लगता है कि आप ACTION_DOWN, ACTION_MOVE, UP या CANCEL तरह MotionEvents से सूची आइटम पर OnTouchListener और पकड़ गद्दी, प्रारंभिक और वर्तमान गति आंदोलन का उपयोग कर सकते हैं।

संबंधित मुद्दे