私は非常に最近、Google Playストアを再生のように素敵な水平RecyclerView
多くを持っているために、Support Library v24
内部に設けられSnapHelper
を使用し始めました。RecyclerView&SnapHelperは - >スナップ/ターゲットに取得ビュー
私の質問は簡単です。スクロール状態がずっとViewPager.OnPageChangedListener
と同じように(セトリングあるとき、私に通知することができます。スクロールがセトリングしたとき、私はデフォルトの動作として中央に表示されますビューをアニメーション化する必要があるため、これは重要ですRecyclerView.OnScrollListener
を使用することにより
そのアニメーションが焦点は今のところすぐに対する中心項目。
にもたらされることを示してLinearSnapHelper
の。私は、スクロール状態が経由アイドルときに中心にビューを得ることができました次の行:
問題は、スクロールが完了したときにアニメーションを開始するのが奇妙なことです。スクロールがアイドルになるとアニメーションが完了するように、スクロールが収まるようにアニメーションをスムーズに再生する必要があります。
ご覧のとおり、RecyclerView
のどのアイテムが中心になるのか分かりにくいです。
これまで私が試した解決策は次のとおりです。
Iは、スクロール状態が
RecyclerView.SCROLL_STATE_SETTLING
に設定されている場合、同じ計算を使用してみました。残念ながら、スクロールがアイドル状態でないときにアダプタからfindVisiblePosition
メソッドを呼び出すことは悪い考えです。スクロール速度に応じて、これらのメソッドが呼び出されたときに表示されるアイテムは、スクロールがコンプリート。実際には、コール時に表示されているアイテムを教えてくれます。onFling(...)
が呼び出されたとき、私はがをスナップされますビューを取得するためにfindSnapView(...)
を使用できますように、それは総理にかなっているが、私はそれを見つけるためにしようとするために必要な...私は
LinearSnapHelper
を拡張を試してみましたかうまくいけば、スクロールが完了したときにどのビューが中央に置かれるかを教えてください。findTargetSnapPosition(...)
スクロール状態がRecyclerView.SCROLL_STATE_SETTLING
とき私はまた、すべてのこれらのソリューション
findSnapView(...)
を使用するように、試みたが、どれも(異なるスワイプ強度で&スピードをしようとして)複数のテストを渡されていません。いくつかの機会には正しいことがありましたが、さまざまな状況では間違っていたため、ソリューションを使用できなくなってしまいました。
LinearSnapHelper
私は、スワイプの後に何とかスクロールした後、スクロールが完了する前に(スクロールする距離の長さ)必要に応じて、したがって、どのビューが最終的なスナップ表示 ...であることを知っていますか?
とにかく、私の主な質問は:スワイプのスピードと強さに関係なく、スワイプ後に私のRecyclerView
のどのアイテムが中央に置かれるのかをどのように知ることができますか?
ありがとうございましたが、私は、アイテムが集中しているかどうかを知る方法を探していました** **スワイプ後は決着していません。 – Mackovich