2011-07-02 5 views
6

मैं "कार्रवाई के लिए स्वाइप" सुविधा को लागू करने की कोशिश कर रहा हूं - जैसे कि आप "नया" ट्विटर ऐप में देख सकते हैं। swipe for action description पर आपको एक करीबी विवरण मिलता है।एंड्रॉइड लिस्ट व्यू ट्विटर की तरह कार्रवाई के लिए स्वाइप करें

अब, क्या इस सुविधा को कार्यान्वित करने के लिए कोई विचार/समाधान है?

धन्यवाद!

उत्तर

6

प्रत्येक पंक्ति में GestureDetector का उपयोग करें, और पंक्ति सामग्री को स्वयं को ViewFlipper पर लपेटें। एक स्वाइप पर, ViewFlipper के बच्चों को स्विच करें।

मैं एक ViewSwiper कि एक GestureDetector और ViewFlipper को जोड़ती है, लेकिन यह किसी भी दिशा में काम करने के लिए डिज़ाइन किया गया है (जैसे, नियमित पंक्ति से, एक कड़ी चोट छोड़ दिया है या सही कार्रवाई करने के लिए स्विच जाएगा) है, जो हो सकता है या हो सकता है वांछनीय नहीं है। लेकिन, यह आपको एक विचार देना चाहिए कि यह कैसे काम कर सकता है।

+0

आपकी प्रतिक्रिया के लिए धन्यवाद। मुझे आपके लिए एक समान समाधान मिला है। http://goo.gl/WpFEi पहला परीक्षण एक बहुत अच्छा लेकिन लगी परिणाम प्रतिक्रिया देता है। मुझे लगता है कि इस समाधान को थोड़ा अनुकूलन की जरूरत है - लेकिन मुझे लगता है कि यह काम करेगा! धन्यवाद – Superroot

+0

क्या यह एंड्रॉइड 2.1+ जेस्चरडेक्टर के लिए काम करता है? –

+0

@CodeDroid: क्या * क्या * "एंड्रॉइड 2.1+ जेस्चरडिटेक्टर के लिए काम करता है"? – CommonsWare

1

मैंने आपको जो कुछ चाहिए उसके समान कुछ किया - आपको there के बारे में कुछ जानकारी मिल सकती है। मैं वहां कुछ मैनुअल सामान कर रहा हूं लेकिन यह अच्छा काम करता है। आपकी सुविधा के लिए यहां मैंने जो कोड इस्तेमाल किया है:

OnTouchListener gestureListener = new View.OnTouchListener() { 

    private int padding = 0; 
    private int initialx = 0; 
    private int currentx = 0; 
    private ViewHolder viewHolder; 

    public boolean onTouch(View v, MotionEvent event) { 

     if (event.getAction() == MotionEvent.ACTION_DOWN) { 
      padding = 0; 
      initialx = (int) event.getX(); 
      currentx = (int) event.getX(); 
      viewHolder = ((ViewHolder) v.getTag()); 
     } 

     if (event.getAction() == MotionEvent.ACTION_MOVE) { 
      currentx = (int) event.getX(); 
      padding = currentx - initialx; 
     } 

     if (event.getAction() == MotionEvent.ACTION_UP || 
      event.getAction() == MotionEvent.ACTION_CANCEL) { 
      padding = 0; 
      initialx = 0; 
      currentx = 0; 
     } 

     if (viewHolder != null) { 
      if (padding == 0) { 
       v.setBackgroundColor(0xFF000000); 
       if (viewHolder.running) 
        v.setBackgroundColor(0xFF058805); 
      } 
      if (padding > 75) { 
       viewHolder.running = true; 
       v.setBackgroundColor(0xFF00FF00); 
       viewHolder.icon.setImageResource(R.drawable.clock_running); 
      } 
      if (padding < -75) { 
       viewHolder.running = false; 
       v.setBackgroundColor(0xFFFF0000); 
      } 
      v.setPadding(padding, 0, 0, 0); 
     } 
     return false; 
    } 
}; 
संबंधित मुद्दे