如何编写可以向上或向下关闭的类似 BottomSheet 的视图
How to code a BottomSheet like view that can be dismissed upwards or downwards
这几天我在网上到处找,没找到。我正在尝试编写类似 BottomSheetDialog
的代码,可以向上或向下关闭(从视图中滑出)。
如果从头开始编写这样的视图,用例将如下所示:视图填满整个屏幕,并且可以向上或向下拖动(仅限垂直移动)。拖动和释放时,视图应该有一个速度并相应地保持移动。一旦视图移出屏幕,就会触发回调,指示视图是向上还是向下移动。
我不希望答案交给我。我假设我必须从头开始编写这样的代码。我只是不知道从哪里开始。我可以使用哪些 Android 组件(ViewDragHelper
,等等)来创建这样的东西?我仅通过 OnTouchListener
、检查 MotionEvent.ACTION_MOVE
标志并使用接收到的运动事件数据修改视图的 LayoutParams
就取得了一些成功,如 here 所示。那么我将如何处理速度?
我最终按照@azizbekian 的建议修改了 Plaid 应用程序中的 BottomSheet。
最显着的变化发生在 computeSettleDuration
方法和 ViewDragHelper.Callback
中的 clampViewPositionVertical
回调中。
让它按预期工作非常容易。源码可以查看here.
这几天我在网上到处找,没找到。我正在尝试编写类似 BottomSheetDialog
的代码,可以向上或向下关闭(从视图中滑出)。
如果从头开始编写这样的视图,用例将如下所示:视图填满整个屏幕,并且可以向上或向下拖动(仅限垂直移动)。拖动和释放时,视图应该有一个速度并相应地保持移动。一旦视图移出屏幕,就会触发回调,指示视图是向上还是向下移动。
我不希望答案交给我。我假设我必须从头开始编写这样的代码。我只是不知道从哪里开始。我可以使用哪些 Android 组件(ViewDragHelper
,等等)来创建这样的东西?我仅通过 OnTouchListener
、检查 MotionEvent.ACTION_MOVE
标志并使用接收到的运动事件数据修改视图的 LayoutParams
就取得了一些成功,如 here 所示。那么我将如何处理速度?
我最终按照@azizbekian 的建议修改了 Plaid 应用程序中的 BottomSheet。
最显着的变化发生在 computeSettleDuration
方法和 ViewDragHelper.Callback
中的 clampViewPositionVertical
回调中。
让它按预期工作非常容易。源码可以查看here.