6

overscrolledAndroid ListView でユーザーが持っている正確なピクセル数を特定する方法はありますか? ユーザーが最初のリスト項目を超えて上にスクロールしようとすると、オーバースクロール/バウンスアニメーションが開始され、オーバースクロール距離を検出する必要があります。基本的には、 iPhoneのClearアプリに似た、アニメーションの折り畳みなど、そのスペースで何かを行います。

ListView とその項目 ( を使用) でgetScrollY()とを呼び出してみましたが、すべてが 0 を返します。参考までに、私のリスト項目はすべて同じ高さです。getTop()getChildAt(0).getTop

また、 に を追加して、元の Y pos on と Y pos on の差を計算してみましたonScrollListenerが、listviewスクロールの速度が遅くなったようです。ACTION_DOWNACTION_MOVElistview

どんな助けでも素晴らしいでしょう。

4

3 に答える 3

3

このメソッドをオーバーライドするのはどうですか?

protected boolean overScrollBy (int deltaX、int deltaY、int scrollX、int scrollY、int scrollRangeX、int scrollRangeY、int maxOverScrollX、int maxOverScrollY、boolean isTouchEvent)

scrollY は 0 のままですが、 isTouchEvent が true の場合に deltaY を累積して、ユーザーがオーバースクロールした距離を取得できます。

于 2013-10-29T14:18:14.903 に答える
2

掘り下げて、さらにフラストレーションを感じた後、答えはできないようです。さらに厄介なのは、Android のソース コードを調べたところ、必要なコードがすべて AbsListView の内部ガビングにうまく隠されていることがわかりました。しかし、すべてが失われるわけではありません。AbsListView をガイドとして使用して独自のビューを作成し、その中で必要なことを実行できるようです。私が望んでいたよりも長ったらしいですが、それでいいのです。また、独自のビューを作成する方法についての素晴らしいチュートリアルも見つけました。このチュートリアルでは、好きなことを行うことができます。

編集

私はついにGithubでデモを立ち上げて実行しました。興味がある場合は、ここで見つけることができます。上から下に引っ張ると、新しいビューが内側に回転します。手放すか上にスクロールすると、ビューが外側に回転します。

于 2013-09-18T19:43:31.453 に答える