2011-07-02 25 views

cevap

6

Her satırda bir GestureDetector kullanın ve satır içeriğini bir ViewFlipper içinde sarın. Bir hızlıca, ViewFlipper'un çocuklarını değiştirin.

Ben GestureDetector ve ViewFlipper birleştiren ViewSwiper var, ama her iki yönde çalışmak üzere tasarlanmıştır (örneğin normal sıradan bir kaydırma sola veya sağa eylemlere geçmek olurdu), hangi olabilir veya may arzu edilmez. Ancak, bunun nasıl çalışabileceği konusunda bir fikir vermelisiniz.

+0

Cevabınız için teşekkür ederiz. Sizinki için benzer bir çözüm buldum. http://goo.gl/WpFEi İlk testler çok iyi ama laggy sonuçlarına cevap veriyor. Bence bu çözüm biraz özelleştirmeye ihtiyaç duyuyor - ama bence işe yarayacak! Teşekkürler – Superroot

+0

Bu Android 2.1 ve GestureDetector için çalışıyor mu? –

+0

@CodeDroid: * Ne * "Android 2.1 ve GestureDetector için çalışıyor" mu? – CommonsWare

1

İhtiyacınıza benzer bir şey yaptım - there hakkında bazı bilgileri bulabilirsiniz. Elimde bazı şeyler yapıyorum ama güzel çalışıyor. Size kolaylık sağlamak için kullandığım kod:

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; 
    } 
}; 
İlgili konular