Samsung Galaxy S2 2.3.5+ не вызывает overScrollBy ()

Похоже, что Samsung отключил сверхпрокрутку (вероятно, из-за костюма Apple).

У меня есть реализация представления, которое расширяет ScrollView и переопределяет

  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); } 

На каждом другом устройстве (Gingerbread и, конечно же,), overScrollBy вызывается, когда скроллер достигает своего конца, и пользователь может реально пересказывать представление).

На Android 2.3.5+ Samsung реализовал какой-то механизм, который полностью отключает сверхпрокрутку (не только их реализацию перепрограммирования, но также и реализацию Android), и каждый раз, когда пользователь пытается перепроверить, печатается следующее событие LogCat:

 02-13 16:02:34.230: D/BounceScrollRunnableDefault(15783): run(), TimeFraction=0.5225, mBounceExtent=7.273352 

Есть ли способ разблокировать то, что Samsung сделал там? Или, может быть, еще один способ создать перекрестку?

Я просто столкнулся с такой же проблемой и, наконец, придумал следующее выборочное обнаружение скрещивания:

  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; } }); 

Проблема решена, я создал свой собственный OverScrollView, вы можете его использовать. https://github.com/EverythingMe/OverScrollView