Android – Slide ListView con setX, setPadding o animación de interpolación?

Sin entrar en demasiados detalles, quiero ser capaz de 'deslizar' los elementos en un ListView similar a la función 'slide to archive' en GMail. Estoy bien con el onTouchListener y todo eso, mi pregunta es acerca de la animación de diapositivas.

Las dos primeras cosas que vienen a la mente son ..

 view.setPadding(slideOffset, 0, 0, 0); 

y..

 view.setX(slideOffset); 

El primero es muy mantecoso, incluso en el emulador.
Este último es un poco janky en mi Galaxy Nexus.

Mis preguntas:
* Independientemente de lo que he intentado, ¿cuál es la forma correcta de hacer esto?
¿Por qué setX es menos suave que setPadding ?
¿Un acercamiento se ajusta a las mejores prácticas de Android más que el otro?
¿Están las animaciones de traducción interpolada una opción? Si es así, ¿puede proporcionar un breve ejemplo para señalarme en la dirección correcta, por favor?

Editar:
Para ser claro, estoy adjuntando una imagen del efecto que estoy tratando de emular.

Introduzca aquí la descripción de la imagen

Estoy bastante seguro de que el setX () es más lento porque afecta a sus padres. Al cambiar la X de una vista, llama al onLayout / onMeasure del padre cada vez que usted pone al día el valor. Esto se debe a que el valor X del niño puede causar que otros elementos del padre se muevan, por lo que el padre debe volver a dibujarse.

Puede probar esto fácilmente extendiendo el ViewGroup y escribiendo en el registro de esos métodos. A continuación, puede utilizar ambos enfoques, relleno vs setX, y ver qué pasa.

¿Estás intentando animar el elemento? ¿O quieres que el usuario lo mueva como en Gmail? Puede utilizar ObjectAnimator para manejar el valor "X" de su elemento. Combinado con una "capa de hardware" para su artículo, creará una experiencia más suave. Puede encontrar más detalles sobre cómo hacerlo aquí: http://developer.android.com/guide/topics/graphics/hardware-accel.html

Sí, si estás apuntando APIs más altas, ViewPropertyAnimator es probablemente una gran solución. Si tienes que soportar APIs más bajas, mi proceso de pensamiento para la implementación sería (y no lo he implementado personalmente, pero esto debería ser bueno para el rendimiento) para:

  1. En su manejador táctil, una vez que haya determinado que el usuario está "deslizando", establezca la visibilidad de la vista en INVISIBLE y almacene la caché de dibujo en un mapa de bits independiente (Bitmap bmp = myView.getDrawingCache ();)

  2. Dibuje ese mapa de bits en el mismo lugar que la vista y use los métodos de traducción Canvas para cambiar la posición de acuerdo con la posición x del punto de contacto del usuario.

  3. Después de que el usuario permite ir, traducir de nuevo (preferiblemente sin problemas con una animación), reciclar el mapa de bits, y establecer la vista de nuevo a VISIBLE.

  • ¿Crea desplazamiento alfabético fácil en ListView?
  • Cómo poner editable editable dentro de un listview?
  • ¿Cómo se muestran 2 vistas en 1 actividad (android)?
  • Android, usando SimpleCursorAdapter para establecer el color no sólo las cadenas
  • cómo filtrar el listview personalizado en android
  • Android: agregar elementos a un ListView con TranscriptMode establecido en Normal
  • Los elementos listView desaparecen en desplazamiento para android 2.3
  • Android - ¿Cómo enlazar un ListView a una colección de objetos personalizados?
  • Lista de elementos con colores alternos
  • Disposición de la lista vacía de Android
  • Android: ¿Cómo detectar el doble toque?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.