2017-04-26 2 views
1

Ich habe in den letzten Tagen überall im Internet gesucht, ohne Erfolg. Ich versuche, so etwas wie eine BottomSheetDialog zu kodieren, die entweder nach oben oder nach unten weggeklappt werden kann.Wie man eine BottomSheet-ähnliche Ansicht codiert, die nach oben oder unten verschoben werden kann

Wenn eine solche Ansicht von Grund auf neu codiert würde, wäre der Anwendungsfall wie folgt: Die Ansicht füllt den gesamten Bildschirm und kann nach oben oder unten gezogen werden (nur vertikale Bewegung). Beim Ziehen und Loslassen sollte die Ansicht eine Geschwindigkeit haben und sich entsprechend bewegen. Sobald sich die Ansicht außerhalb des Bildschirms befindet, sollte ein Rückruf ausgelöst werden, der angibt, ob sich die Ansicht nach oben oder nach unten bewegt hat.

Ich erwarte nicht, dass mir die Antwort ausgehändigt wird. Ich gehe davon aus, dass ich so etwas von Grund auf programmieren müsste. Ich habe keine Ahnung, wo ich anfangen soll. Welche Android-Komponenten (ViewDragHelper, etc) könnte ich verwenden, um so etwas zu erstellen? Ich hatte etwas Erfolg mit nur einem OnTouchListener, das für das MotionEvent.ACTION_MOVE Kennzeichen überprüft und die empfangenen Bewegungsereignisdaten benutzt, um das LayoutParams der Ansicht wie gezeigt here zu ändern. Wie würde ich dann über die Geschwindigkeit gehen?

+0

Ein guter Start für Sie wird sehen [Nick Butcher] (https://twitter.com/crafty?ref_src=twsrc%5Egoogle%7Ctwcamp%5Eserp%7Ctwgr%5Eauthor) ist ["Animatable" Präsentation] (https : //www.youtube.com/watch? v = 86p1GPEv_fY), wo er erklärt, wie er eine solche Funktion in seiner Open-Source-App [Plaid] implementiert hat (https://github.com/nickbutcher/plaid). – azizbekian

+0

Dank @azizbekian Ich schaue das Video jetzt –

+0

@azizbekian Plaid hat genau das, was ich lernen muss! Ich danke dir sehr. Ich werde eine Antwort posten, sobald der Code fertig ist. –

Antwort

1

Ich habe am Ende geändert BottomSheet von der Plaid-App, wie von @azizbekian vorgeschlagen.

Die bemerkenswertesten Änderungen wurden in der computeSettleDuration Methode und in clampViewPositionVertical Rückruf gefunden in ViewDragHelper.Callback gemacht.

Es war überraschend einfach, es wie geplant zu bekommen. Der Quellcode kann angesehen werden here.

Verwandte Themen