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.
- Android: Centrar elementos en un ListVIew
- Barra de Acción de Android Buscar con listview
- Cómo crear un cajón de navegación personalizado en android
- Cambiar el color de fondo y color de texto del elemento de fila listview en android
- ArrayAdapter en Fragmento - Android
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!
- Cómo hacer una cabecera de sección en ListView que siempre se pega en la parte superior?
- Widget de Android con ListView no carga elementos correclty
- Hacer el diseño lineal seleccionable como un elemento de lista en una vista de lista (Android)
- Android ListView con botón no es seleccionable (clicable)
- Android ListView Edge Fading funciona en un dispositivo virtual 2.2 pero no en Samsung 2.2.1
- Encabezado de listview de Android
- Imagen local a través de json local en android
- Cómo combinar dos o más adaptadores y mostrar en un ListView en Android
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
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.
- Reemplazo de Android O para getRunningServices
- Excepción "javax.net.ssl.SSLException: No certificado de servidor de confianza" en Android