8

似乎像三星禁用他们overscroll(可能是由于苹果套装)。三星Galaxy S2 2.3.5+不打电话overScrollBy()

我具有延伸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); 
    } 

在每一个其它设备(姜饼和向上当然)的视图的实现方式中,overScrollBy当滚动到达它的端部被调用,并且用户可以实际上是过度滚动视图)。

在Android 2.3.5+上,三星已经实现了某种机制,可以完全禁用overscroll(不仅仅是它们的overscroll实现,还包括Android的实现),并且每次用户尝试过度滚动时,都会打印以下LogCat事件:

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

有什么办法可以解锁三星在那里做的事吗?或者,也许另一种方式来创建overscroller?

+0

...以下作品替代小提琴手... – Houston 2013-03-06 06:54:43

回答

3

问题解决了,我已经创建了自己的OverScrollView,欢迎您使用它。 https://github.com/EverythingMe/OverScrollView

+0

任何你可以修复此问题的机会,以便为ListViews工作? – VicVu 2012-11-19 15:53:33

+0

ListView是一个更复杂的视图,相同的补丁不适用于它,但如果我有任何消息我会更新。 – Rotemmiz 2012-11-26 22:04:28

+0

这将是伟大的,谢谢。 – VicVu 2012-11-27 18:20:23

3

我只是遇到了同样的问题,终于想出了以下自定义反弹时检测:

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

我会在适当的时间尝试这个。 – VicVu 2012-11-29 18:23:24

+0

就像一个魅力......做得非常好。谢谢你的提琴手! – Houston 2013-03-06 06:53:01