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.

  • Agregar botón de actualización a la página de error - Webview
  • ¿Por qué Android WebView no está cargando youtube HTML5 iframe video?
  • Cómo borrar el historial de webview en android
  • Vista web de Android con GSAP: intenta eliminar la referencia local que no sea JNI,
  • Sherlock Acción invalidateOptionsMenu ()
  • Cómo obtener URL de enlace en Android WebView con HitTestResult para una imagen vinculada (y no la URL de imagen) con Longclick
  • Uso de navigator.geolocation.getCurrentPosition en WebView en Android 2.0+ (relacionado con PhoneGap)
  • Selección de texto de Android en la vista web
  • Guardar imagen desde WebView
  • Monkeyrunner no toca la vista web
  • Android PhoneGap con controles nativos
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.