2010-09-17 11 views
6

Tengo un ScrollView que tiene dos imágenes ocultas, una en la parte superior y otra en la parte inferior. En el medio hay un montón de contenido visible.Android: detectar cuando ScrollView ha terminado de desplazarse y rebotar?

Lo que tengo que hacer es ocultar estas imágenes de forma predeterminada, pero cuando se desplaza hacia arriba o hacia abajo, puede verlas mientras se desplaza. Pero tan pronto como deje de desplazarse, debería rebotar en el área visible para que las imágenes ocultas no se muestren.

Básicamente estoy tratando de imitar la característica de desplazamiento de rebote del iphone UIScrollView.

Tengo mi ScrollView all setup y hago un scroll al principio para ocultar la imagen oculta superior. Ahora todo lo que tengo que hacer es detectar cuándo ha terminado un desplazamiento, averiguar la posición Y y verificar si se muestra una imagen oculta. Si lo es, simplemente desplazaré la vista hacia atrás de manera programada para que la imagen oculta quede oculta.

Espero que todo eso tenga sentido.

Así que de todos modos, sé cómo desplazarme por programación un ScrollView. Ahora lo que necesito es algún tipo de devolución de llamada para decirme cuándo ScrollView terminó de desplazarse y también una forma de obtener la posición actual de Y de ScrollView. ¿Hay algún método que pueda usar?

Miré a través de los documentos ScrollView pero nada saltó hacia mí. Todavía no estoy muy familiarizado con los esquemas de nombres de Android, así que tal vez me perdí algo obvio en alguna parte.

De todos modos, cualquier ayuda sería apreciada aquí. Aclamaciones.

Respuesta

4

Puede usar un OnTouchListener para detectar cuando el usuario presiona/suelta la lista.

También puede utilizar el método onScrollStateChanged de la clase OnScrollListener (muy probablemente en conjunción con un detector táctil) para detectar cambios en la SCROLL_STATE - cuando la lista se ha detenido el desplazamiento del estado va a cambiar de un estado que es noSCROLL_STATE_IDLE a SCROLL_STATE_IDLE.

Alternativamente, si está utilizando 2.3 o superior, puede usar un OverScroller para obtener el efecto deseado (consulte Modifying Android OverScroll para saber cómo cambiar el efecto de desplazamiento a un iPhone como uno).

+13

no hay OnScrollListener para ScrollView – Frank

Cuestiones relacionadas