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

  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?

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

  • Samsung Galaxy S2 AVD - piel oficial, cómo hacer las dimensiones correctas
  • Problema de orientación ACTION_IMAGE_CAPTURE en Nexus S y Samsung Galaxy S I9000
  • Cómo configurar la fecha / hora del dispositivo Android mediante programación
  • ¿Cómo utilizar el flash / led de la cámara como antorcha en una lengüeta de Samsung Galaxy?
  • VideoView no reproduce vídeo en bucle solo en Galaxy s4
  • Android multiple videoView problem, Galaxy Tab específico
  • ¿Dónde / Cómo puedo obtener los controladores USB OEM de Android SDK para un Samsung Galaxy Player (YP-G1)
  • Android httpclient.execute excepción
  • Bluetooth 4.0 / Smart / Baja energía en el Samsung Galaxy S3
  • Typeface.ITALIC no funciona en Galaxy Note 2
  • Dispositivos con Android 4.2 (Jelly Bean) compatible con Bluetooth de baja energía (BLE)
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.