2017-04-26 22 views
1

過去幾天我一直在搜索整個互聯網,都無濟於事。我試圖編寫一些類似BottomSheetDialog的代碼,可以將它們向上或向下解散(從視圖中刪除)。如何編碼底視圖,可以向上或向下解除視圖

如果這樣的視圖將從頭開始編碼,則用例如下:視圖填充整個屏幕,並且可以向上或向下拖動(僅垂直移動)。拖動和釋放時,視圖應該有一個速度並相應地繼續移動。一旦視圖離開屏幕,應該觸發回調,指示視圖是向上還是向下移動。

我不希望將答案交給我。我假設我必須從頭開始編寫這樣的代碼。我只是不知道從哪裏開始。我可以使用哪些Android組件(ViewDragHelper等)來創建類似的內容?我已經取得了一些成功,只有OnTouchListener,檢查MotionEvent.ACTION_MOVE標誌並使用接收到的動作事件的數據修改視圖的LayoutParams,如圖here所示。那麼我將如何去追求速度?

+0

對你而言,一個好的開始將會被觀看[Nick Butcher](https://twitter.com/crafty?ref_src=twsrc%5Egoogle%7Ctwcamp%5Eserp%7Ctwgr%5Eauthor)的[「Animatable」演示文稿](https ://www.youtube.com/watch?v = 86p1GPEv_fY),在那裏他解釋了他如何在他的開放源碼[格子應用](https://github.com/nickbutcher/plaid)中實現這樣的功能。 – azizbekian

+0

Thanks @azizbekian我正在看視頻 –

+0

@azizbekian格紋正是我需要學習的!非常感謝。代碼完成後,我會盡快發佈答案。 –

回答

1

根據@azizbekian的建議,我最終修改了格子應用中的BottomSheet

最顯着的變化是computeSettleDuration方法和clampViewPositionVertical回調發現在ViewDragHelper.Callback

令人驚訝的是,它很容易按預期工作。源代碼可以查看here

相關問題