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.
- Cómo cargar o recuperar una página web en modo en línea y fuera de línea en la aplicación android?
- ¿Cómo detengo Flash después de dejar un WebView?
- Cómo detener ScrollView desde el desplazamiento hasta la parte inferior de la página cargada actual en WebView
- Cargar archivo html local en webview android
- Cargando el caché cuando está sin conexión en la vista Web de Android
¿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; }
- LinearLayout de un WebView y un botón
- Personajes extraños en html webview
- ¿Puede WebView de Android redimensionar automáticamente imágenes enormes?
- El video de Android no se reanuda en la vista web
- Fling Gesture y Webview en Android
- Múltiples instancias de webview destacadas vistas en dispositivos cromados al abrir y cerrar la aplicación android de Córdoba
- WebView loadDataWithBaseUrl - problema extraño en android 4.0.3
- Fuga de memoria de WebView de Android al utilizar activos
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.
- FirebaseRecyclerAdapter no actualiza los índices de elementos cuando se eliminan los datos
- Configuración del Dirigible Urbano con objetivos múltiples – ¿Es posible el mismo ID de paquete?