如何编写可以向上或向下关闭的类似 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.