Samsung Galaxy S2 2.3.5+ no llamando a overScrollBy ()
Parece que Samsung deshabilitado su overscroll (probablemente debido a un traje de Apple).
Tengo una implementación de una vista que extiende ScrollView
y reemplaza
- NullPointerExceptions sólo en algunos dispositivos Samsung Galaxy?
- Ocultar error "Tipo de etiqueta NFC no admitido" en los dispositivos Samsung Galaxy
- Samsung Galaxy Devices no puede usar geolocation.getCurrentPosition
- Samsung Galaxy S II AVD (dispositivo virtual Android) Configuración básica?
- Odd Error "Clase no encontrada al desmarcar"
protected boolean overScrollBy(int deltaX, int deltaY, int scrollX, int scrollY, int scrollRangeX, int scrollRangeY,int maxOverScrollX, int maxOverScrollY, boolean isTouchEvent) { ... return super.overScrollBy(deltaX, deltaY, scrollX, scrollY, scrollRangeX, scrollRangeY, 0, metrics.widthPixels,isTouchEvent); }
En todos los demás dispositivos (Gingerbread y por supuesto), overScrollBy
se llama cuando el scroller llega a su final, y el usuario puede realmente overscroll la vista).
En Android 2.3.5+ Samsung ha implementado algún tipo de mecanismo que deshabilita el desplaza- miento excesivo (no sólo su implementación de overscroll, sino también la implementación de Android) y cada vez que un usuario trata de sobrecargar, se está imprimiendo el siguiente evento de LogCat:
02-13 16:02:34.230: D/BounceScrollRunnableDefault(15783): run(), TimeFraction=0.5225, mBounceExtent=7.273352
¿Hay alguna manera de desbloquear lo que Samsung hizo allí? O tal vez otra manera de crear un overscroller?
- Galaxy S5 Lollipop - no todos los puntos de interrupción detienen la ejecución bajo Android Studio debugger
- AVD Emulator no muestra los botones de hardware
- Android - botón del menú de la demostración en el nexo de la galaxia
- No se puede reproducir vídeo RTSP en VideoView en Samsung Galaxy S2
- La herramienta perf perf de Linux devuelve el recuento de instrucciones cero. ¿Que me estoy perdiendo aqui?
- Android: No obtengo stacktrace, el teléfono solo cuelga
- SMSManager no funciona en Samsung Galaxy S3 LTE
- El 'launchimage' de mi aplicación trigger.io es demasiado pequeño en un Galaxy Nexus
Acabo de hacer frente al mismo problema y finalmente subí con la detección de overscroll de encargo siguiente:
listView.setOnTouchListener(new OnTouchListener() { private static final float OVERSCROLL_THRESHOLD_IN_PIXELS = 70; private float downY; @Override public boolean onTouch(View v, MotionEvent event) { int firstVisibleItem = listView.getFirstVisiblePosition(); int totalItemCount = listView.getCount(); int visibleItemCount = listView.getChildCount(); boolean onTop = firstVisibleItem == 0 && listView.getChildAt(0) != null && listView.getChildAt(0).getTop() == 0; boolean onBottom = firstVisibleItem + visibleItemCount == totalItemCount && listView.getChildAt(visibleItemCount-1).getBottom() == listView.getHeight(); if(onTop || onBottom) { switch(event.getAction()) { case MotionEvent.ACTION_DOWN: downY = event.getY(); break; case MotionEvent.ACTION_MOVE: float deltaY = event.getY() - downY; if(onTop && deltaY > OVERSCROLL_THRESHOLD_IN_PIXELS) { // Top overscroll } if(onBottom && -deltaY > OVERSCROLL_THRESHOLD_IN_PIXELS) { // Bottom overscroll } break; } } return false; } });
Problema resuelto, he creado mi propio OverScrollView, le invitamos a usarlo. https://github.com/EverythingMe/OverScrollView