2011-07-02 17 views

Respuesta

6

Utilice un GestureDetector en cada fila, y envolver la propia contenido de filas en una ViewFlipper. Con un deslizamiento, cambie a los niños del ViewFlipper.

Tengo un ViewSwiper que combina un GestureDetector y ViewFlipper, pero está diseñado para funcionar en cualquier dirección (por ejemplo, desde la fila regular, un pase a la izquierda o juicio podría cambiar a las acciones), que puede ser o no ser deseable Pero, debería darle una idea de cómo esto podría funcionar.

+0

Gracias por su respuesta. He encontrado una solución similar a la suya. http://goo.gl/WpFEi La primera respuesta de las pruebas es muy buena pero con resultados laggy. Creo que esta solución necesita un poco de personalización, ¡pero creo que funcionará! Gracias – Superroot

+0

hace este trabajo para Android 2.1+ GestureDetector? –

+0

@CodeDroid: ¿* qué * "funciona para Android 2.1+ GestureDetector"? – CommonsWare

1

hice algo similar a lo que necesita - usted puede encontrar algo de información acerca there. Estoy haciendo algunas cosas manuales allí, pero funciona bien. Para su conveniencia aquí está el código que he usado:

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; 
    } 
};