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.
- Extracto de Android WebView HTML
- ¿Puedo usar componentes de polímero / web en una aplicación androide nativa sin Cordova?
- Vista web de Android con el botón Atrás, si no
- ¿Puede alguien dar un ejemplo exacto de la implementación de webview en android
- Cómo crear una vista web a pantalla completa
¿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; }
- Android: NullPointerException en la vista web
- Appcache en Android Webview no descargar fuentes
- Cómo reproducir video en Android Web view usando html5
- Las actualizaciones de la caché de la aplicación se bloquean en el estado CHECKING
- ¿Hay una mejor vista web para Android
- Cómo grabar la pantalla de actividad de la webview con Android MediaCodec?
- Android WebView setCertificate emite problemas de SSL
- Autenticación NTLM en WebView sin proporcionar contraseña explícitamente
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?