2013-03-29 3 views
5

मैं एंड्रॉइड के लिए नौसिखिया हूं कृपया मेरी मदद करें, क्या गतिविधि स्क्रीन के लंबवत स्क्रॉल दृश्य में स्वाइप कार्रवाई जोड़ने की उनकी कोई संभावना है। मैं कड़ी मेहनत कर रहा हूं , लेकिन नहीं मिल रहा है ...एंड्रॉइड - लंबवत स्क्रॉल दृश्य में क्षैतिज स्वाइप इशारा कैसे जोड़ सकता है जैसे पल्स ऐप में स्क्रीन व्यू

+0

क्या आप मिल गया का जवाब? मुझे भी एक ही समस्या का सामना करना पड़ रहा है। कृपया मदद करें अगर आपने – Jaguar

+0

@ जगुआर हाँ .. .., नीचे दिए गए उत्तर देखें। –

+0

क्या यह विशेष रूप से 'ListView' के लिए है, आपकी गतिविधि' ListActivity' – Jaguar

उत्तर

2

मैं सिर्फ सूची दृश्य, एक आकर्षण की तरह इसके कार्यों के लिए लंबवत स्क्रॉल दृश्य परिवर्तित ... धन्यवाद omid nazifi and wwyt करने के लिए, के लिए और अधिक यू इस लिंक को देख सकते हैं Gesture in listview android

public class MainActivity extends ListActivity { 

    private OnTouchListener gestureListener; 
    private GestureDetector gestureDetector; 

    private int REL_SWIPE_MIN_DISTANCE; 
    private int REL_SWIPE_MAX_OFF_PATH; 
    private int REL_SWIPE_THRESHOLD_VELOCITY; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     // As paiego pointed out, it's better to use density-aware measurements. 
     DisplayMetrics dm = getResources().getDisplayMetrics(); 
     REL_SWIPE_MIN_DISTANCE = (int)(1.0f * dm.densityDpi/160.0f + 0.5); 
     REL_SWIPE_MAX_OFF_PATH = (int)(250.0f * dm.densityDpi/160.0f + 0.5); 
     REL_SWIPE_THRESHOLD_VELOCITY = (int)(200.0f * dm.densityDpi/160.0f + 0.5); 

     ListView lv = getListView(); 
     lv.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, 
      m_Starbucks)); 

     final GestureDetector gestureDetector = new GestureDetector(new MyGestureDetector()); 
     View.OnTouchListener gestureListener = new View.OnTouchListener() { 
      public boolean onTouch(View v, MotionEvent event) { 
       return gestureDetector.onTouchEvent(event); 
      }}; 
     lv.setOnTouchListener(gestureListener); 

     // Long-click still works in the usual way. 
     lv.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { 
      public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { 
       String str = MessageFormat.format("Item long clicked = {0,number}", position); 
       Toast.makeText(MainActivity.this, str, Toast.LENGTH_SHORT).show(); 
       return true; 
      } 
     }); 

     /*lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, 
        long id) { 
       String str = MessageFormat.format("Item @extra clicked = {0,number}", position); 
       Toast.makeText(MainActivity.this, str, Toast.LENGTH_SHORT).show(); 
      } 
     });*/ 
    } 

    // Do not use LitView.setOnItemClickListener(). Instead, I override 
    // SimpleOnGestureListener.onSingleTapUp() method, and it will call to this method when 
    // it detects a tap-up event. 
    private void myOnItemClick(int position, View v) { 
     String str = MessageFormat.format("Item clicked = {0,number}", position); 
     Toast.makeText(this, str, Toast.LENGTH_SHORT).show(); 
    } 

    private void onLTRFling() { 
     Toast.makeText(this, "Left-to-right fling", Toast.LENGTH_SHORT).show(); 
    } 

    private void onRTLFling() { 
     Toast.makeText(this, "Right-to-left fling", Toast.LENGTH_SHORT).show(); 
    } 

    class MyGestureDetector extends SimpleOnGestureListener{ 

     // Detect a single-click and call my own handler. 
     @Override 
     public boolean onSingleTapUp(MotionEvent e) { 
      View lv = (View)getListView(); 
      int pos = ((AbsListView) lv).pointToPosition((int)e.getX(), (int)e.getY()); 
      myOnItemClick(pos,lv); 
      return false; 
     } 

     @Override 
     public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { 
      if (Math.abs(e1.getY() - e2.getY()) > REL_SWIPE_MAX_OFF_PATH) 
       return false; 
      if(e1.getX() - e2.getX() > REL_SWIPE_MIN_DISTANCE && 
       Math.abs(velocityX) > REL_SWIPE_THRESHOLD_VELOCITY) { 
       onRTLFling(); 
      } else if (e2.getX() - e1.getX() > REL_SWIPE_MIN_DISTANCE && 
       Math.abs(velocityX) > REL_SWIPE_THRESHOLD_VELOCITY) { 
       onLTRFling(); 
      } 
      return false; 
     } 

    } 

    private static final String[] m_Starbucks = { 
     "Latte", "Cappuccino", "Caramel Macchiato", "Americano", "Mocha", "White Mocha", 
     "Mocha Valencia", "Cinnamon Spice Mocha", "Toffee Nut Latte", "Espresso", 
     "Espresso Macchiato", "Espresso Con Panna" 
    }; 

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