2017-04-26 12 views
1

私はここ数日間、インターネット上で何も検索していません。無駄です。私はBottomSheetDialogのようなものをコード化しようとしていますが、これは上向きまたは下向きに解消(表示されずにスワイプ)できます。BottomSheetのようなビューを上向きまたは下向きにコーディングする方法

このようなビューがゼロからコード化される場合、ユースケースは次のようになります。ビューは画面全体を満たし、上下にドラッグできます(垂直移動のみ)。ドラッグして放すと、ビューは速度を持ち、それに応じて動き続けなければなりません。ビューが画面外に移動すると、ビューが上または下に移動していたかどうかを示すコールバックが発生します。

私は答えが私に渡されるとは思わない。私はこれから何かをコード化しなければならないと仮定しています。どこから始めたらいいのかわかりません。どのようなAndroidコンポーネント(ViewDragHelperなど)を使ってこのようなものを作成できますか?私はちょうどOnTouchListenerでいくつかの成功を収めました。MotionEvent.ACTION_MOVEフラグをチェックし、受け取ったモーションイベントのデータを使って、hereのようにビューのLayoutParamsを修正しました。私はどのように速度について行きますか?

+0

[Nick Butcher](https://twitter.com/crafty?ref_src=twsrc%5Egoogle%7Ctwcamp%5Eserp%7Ctwgr%5Eauthor)の["Animatable"プレゼンテーション](https ://www.youtube.com/watch?v = 86p1GPEv_fY)、オープンソースの[Plaid app](https://github.com/nickbutcher/plaid)でこのような機能をどのように実装したか説明しています。 – azizbekian

+0

ありがとうございました@azizbekian今すぐビデオを見ています –

+0

@azizbekian Plaidは私が学ぶ必要があるものを正確に持っています!どうもありがとうございます。コードが完了するとすぐに回答を投稿します。 –

答えて

1

@azizbekianの示唆しているように、私はBottomSheetをPlaidアプリから変更しました。

最も顕著な変更はcomputeSettleDurationメソッドで行われ、clampViewPositionVerticalコールバックではViewDragHelper.Callbackが見つかりました。

意図したとおりに動作させるのは驚くほど簡単でした。ソースコードはhereで見ることができます。

関連する問題