8

サムスンのように見えます(おそらくアップルの訴訟のため)。Samsung 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以降では、サムスンはオーバースケールを完全に無効にするメカニズムを実装しています(ユーザーのオーバースクロールの実装だけでなく、Androidの実装も完全に無効にします)、ユーザーがオーバースケールしようとするたびに、 :

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

サムスンがそこで行ったことをロック解除する方法はありますか?またはオーバートラッカーを作成する別の方法は?

+0

...下のフィドラーによる代替案... – Houston

答えて

3

問題を、私はあなたがそれを使用するために歓迎され、私自身のOverScrollViewを作成しました。 https://github.com/EverythingMe/OverScrollView

+0

これを修正してListViewでも動作する可能性はありますか? – VicVu

+0

ListViewはより複雑なビューです。同じパッチは適用されませんが、私にはニュースがあれば更新されます。 – Rotemmiz

+0

それは素晴らしいでしょう、ありがとう。 – VicVu

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

+0

はとても魅力的な作品です。フィドラーありがとう! – Houston

関連する問題