Android: cómo saber si una vista se desplaza

en el iPhone, esto sería simple — cada vista tiene un método scrollViewDidScroll. Estoy tratando de encontrar el equivalente en Android.

Mi código funciona, pero no me está dando lo que quiero. Necesito ejecutar el código toda la duración que una vista está desplazando. Por lo tanto, aunque uso el método onScroll de OnGestureListener, sólo se activa cuando el dedo está en la pantalla (no es realmente nombrado correctamente — se debería llamar "onSlide" o "onSwipe", centrándose en el gesto en lugar de la animación de la interfaz de usuario ). No continúa disparando si el usuario mueve la vista y sigue desplazándose durante unos momentos después de que el usuario levanta el dedo.

¿Hay un método que se llama en cada paso del pergamino?

public class Scroll extends Activity implements OnGestureListener { public WebView webview; public GestureDetector gestureScanner; public int currentYPosition; public int lastYPosition; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); webview = new WebView(this); setContentView(webview); webview.loadUrl("file:///android_asset/Scroll.html"); gestureScanner = new GestureDetector(this); currentYPosition = 0; lastYPosition = 0; } public boolean onTouchEvent(final MotionEvent me) { return gestureScanner.onTouchEvent(me); } public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { // I do stuff here. return true; } 

He jugado un poco con un WebView y no encontré una manera de rastrear el desplazamiento, pero ¿definitivamente lo necesita para ser un WebView? Si está utilizando un ListView o un GridView, puede implementar los métodos ListView.OnScrollListener, especialmente onScrollStateChanged y onScroll . El primero es particularmente útil, ya que le da actualizaciones sobre lo que está haciendo la lista, incluso para su ejemplo específico de que el usuario "arrojar" la lista y continúa desplazándose por algún tiempo después. Un ejemplo de cómo lo haría:

 public class List13 extends ListActivity implements ListView.OnScrollListener { (...) public void onScrollStateChanged(AbsListView view, int scrollState) { switch (scrollState) { case OnScrollListener.SCROLL_STATE_IDLE: //List is idle break; case OnScrollListener.SCROLL_STATE_TOUCH_SCROLL: //List is scrolling under the direct touch of the user break; case OnScrollListener.SCROLL_STATE_FLING: //The user did a 'fling' on the list and it's still scrolling break; } } } 

Levanté eso directamente de los ejemplos de código que Google proporciona, ejemplo List13 en el proyecto "Api Demos". Si desea ver más de cerca eso, importelo a Eclipse, vaya a Archivo -> Nuevo -> Proyecto de Android, Crear proyecto de origen existente y navegue a (su carpeta de SDK) / plataformas / (la versión que está trabajando con) / samples / ApiDemos. Si no lo encuentra, es posible que no haya descargado las aplicaciones de ejemplo al configurar su SDK. Puedes hacerlo en Eclipse yendo a Ventana -> Android SDK y AVD Manager, luego en "Paquetes Disponibles" a la izquierda.

Creo que es posible que desee hacer esto con una vista en lugar de una actividad. Una Vista tiene un método llamado onScrollChanged que suena como lo que quieres. Si no es así, también puede buscar los computeScroll , scrollBy y scrollTo de la misma clase.

Pruebe el siguiente método

 @Override protected void onScrollChanged(int l, int t, int oldl, int oldt) { } 

le dará la última posición desplazada y la nueva posición desplazada después de desplazarse.

  • Cómo agregar la característica de recorte a la Intención de la cámara o la intención de la galería y en la vista Web o en JavaScript
  • WebKit / WebView toque / onclick resaltado por defecto (Android Ice Cream Sandwich)
  • Cómo establecer el tipo de fuente en la vista web
  • Almacenamiento de un WebView para la navegación sin conexión
  • PictureListener y onNewPicture () están obsoletos - Alternativas?
  • Webview dentro de RecyclerView está mostrando pantalla en blanco a veces en los dispositivos de turrón solamente
  • ¿Cómo puedo tomar una captura de pantalla de una vista web, capturar la página completa?
  • Jelly Bean WebView no funciona bien con el atributo HTML maxlength para el cuadro de texto
  • Recuerda la contraseña emergente en el problema de la vista web de Android
  • Android precarga una url en WebView mientras se muestra la pantalla de bienvenida
  • Ajuste de los contenidos de la página web dentro de una vista web (Android)
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.