Cómo implementar Android listview apertura gesto

Esta es una pregunta abierta sobre Android ListViews, Gestos y Animaciones. Realmente no estoy familiarizado con los gestos de Android, por lo que sólo busco ideas y materia gris en esto.

Aquí hay dos capturas de pantalla y un video de ejemplos del efecto en lo que estoy tratando de reflexionar. Considere la posibilidad de echar un vistazo al video, realmente vale la pena.

Introduzca aquí la descripción de la imagen

Introduzca aquí la descripción de la imagen

Las capturas de pantalla son de un proyecto de código abierto de iOS que se encuentra aquí .

La pregunta es, ¿cómo implementarías un gesto de "apertura de lista" como el que veo más y más a menudo en aplicaciones de iPhone / iPad, pero para Android?

Edición 1, idea 1:

Okay primera idea, AFAIK el gesto Pinch es de alguna manera como un gesto de arrastrar, así que supongo que podemos obtener las coordenadas X e Y de los dos dedos en la pantalla?

A continuación, la respuesta a esta pregunta puede ayudar, la idea básica es:

Obtener la posición de índice del primer elemento visible en la lista

Obtener la posición de índice del último elemento visible en la lista

Iterar desde el primer índice hasta el último con la función getChildAt

Para cada niño, llame al método getLocationOnScreen para obtener las coordenadas del elemento iterado actual

Después de eso, una cierta comparación entre las coordenadas del gesto del pellizco y cada coordenadas del artículo se podría hacer dentro del lazo para conseguir los dos artículos entre los cuales la nueva fila debe me insertó.

Creo que podría funcionar, pero tal vez hay una manera más sencilla de obtener esos dos elementos (?).

¿Quién es el siguiente? 🙂

Actualizar:

Gracias por la punta @rhlnair, aprovecho esta ocasión para decirles a todos que empecé a trabajar en esto en mi tiempo libre y que son más que bienvenidos a ayudar en esto.

El proyecto está en https://github.com/arnaudbos/Android-GestureListView . Comencé dos implementaciones diferentes en dos ramas diferentes, y disfrutaría de cualquiera para crear una nueva rama.

Tengo algo realmente alentador en la rama "intent-via-scale-gesture-detector", pero algunos efectos secundarios de la ListView.

Vamos gente!

Parece ser una idea desafiante.

Creo que algunos de los efectos en la aplicación clara como arrastrar una fila seleccionada arriba / abajo se puede tomar de

https://github.com/commonsguy/cwac-touchlist

Al hacer un gesto de pellizco tienes dos dedos en la pantalla y por lo tanto un punto en el medio de esos dos puntos. Eso es simple aritmética euclidiana para encontrar ese punto medio.

Entonces encuentre como usted dice el elemento en la lista que este punto está arriba. Mencionas rendimiento y no creo que esto sea un problema. Usted es iteración un bucle unas pocas veces y pidiendo coordenadas. He hecho mucho peor en los eventos de contacto.

Si el punto entre el pellizco está por encima del centro del elemento de lista, cree el elemento anterior y viceversa a continuación.

Vea la sección en la parte inferior donde usan un receptor de escala: http://android-developers.blogspot.com/2010/06/making-sense-of-multitouch.html

Usando el escucha de la escala usted puede utilizar la escala para descubrir si usted crea un nuevo elemento. Si la escala está por encima (usted está "haciendo zoom") un umbral que crear un nuevo elemento y dejar que la vista repoblar desde el adaptador de la lista.

  • Cómo añadir una sugerencia de texto a Android SwipeRefreshLayout
  • Mantenga un valor EditText en un ListView
  • Android ListView con estilo como iPhone agrupado UITableView
  • Detección de la dirección de desplazamiento en el adaptador (arriba / abajo)
  • Android hide listview scrollbar?
  • ListView circular (elementos en el medio círculo)
  • Forzar un elemento ListView para permanecer "presionado" después de haber hecho clic?
  • Filtrado SPINNER para los datos XML que se habían recuperado
  • SimpleCursorAdapter con Secciones en Android
  • Extender el ejemplo de AbsListView
  • ¿Cómo acceder a `this` dentro de un renderRow de un ListView?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.