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