2012-02-16 9 views
5

Esta es una pregunta abierta sobre Android ListViews, gestos y animaciones. No estoy realmente familiarizado con los gestos en Android, así que solo estoy buscando ideas y material gris sobre esto.Cómo implementar el gesto de apertura de lista de Android

Aquí hay dos capturas de pantalla y a video ejemplos del efecto sobre lo que estoy tratando de cogitar. Considera echar un vistazo al video, realmente vale la pena.

enter image description here

enter image description here

Las capturas de pantalla son de un proyecto de código abierto IOS encontró here.

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

Edición 1, idea 1:

Vale primera idea, que yo sepa el gesto de pellizco es de alguna manera como un gesto de arrastre, así que supongo que podemos conseguir la coordenadas X e Y de los dos dedos en la ¿pantalla?

A continuación, the answer to this question puede ayudar, la idea básica es:

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

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

Iterar desde el primer índice a la última con la función getChildAt

para cada niño, ca ll del getLocationOnScreen método para obtener las coordenadas del elemento iterado actual

Después de eso, una comparación entre el gesto de pellizcar coordina y cada uno coordenadas artículo puede hacerse dentro del bucle para obtener los dos elementos entre los cuales la nueva fila me debe insertar.

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

¿Quién es el próximo? :)

Actualización:

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

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

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

¡Vamos amigos!

+0

increíble pregunta después de ver el video .... –

+0

idea genial ...... – himanshu

Respuesta

0

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

Luego encuentra como dices el elemento en la lista que este punto está arriba. Mencionas el rendimiento y no creo que esto sea un problema. Estás iterando un bucle varias veces y pidiendo coordenadas. He empeorado mucho en eventos táctiles.

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

Ver la sección en la parte inferior donde utilizan un oyente escala: http://android-developers.blogspot.com/2010/06/making-sense-of-multitouch.html

Usando el oyente escala puede utilizar la escala para averiguar si se crea un nuevo elemento. Si la escala está arriba (está "alejando") un umbral, crea un nuevo elemento y permite que la vista se vuelva a llenar desde el adaptador de la lista.

Cuestiones relacionadas