Вы можете использовать Движение материала и Переход между видами .
Например, определите в вашем макете:
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:id="@+id/root"
..>
<com.google.android.material.card.MaterialCardView
android:id="@+id/end_card"
android:visibility="gone" />
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/fab"
.. />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
Затем просто определите MaterialContainerTransform
:
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
showEndView(fab);
}
});
с помощью:
private void showEndView(View startView) {
// Construct a container transform transition between two views.
MaterialContainerTransform transition = new MaterialContainerTransform();
transition.setScrimColor(Color.TRANSPARENT);
transition.setInterpolator(new FastOutSlowInInterpolator());
//set the duration....
//Define the start and the end view
transition.setStartView(startView);
transition.setEndView(endCard);
transition.addTarget(startView);
// Trigger the container transform transition.
TransitionManager.beginDelayedTransition(root, transition);
if (startView != null) {
startView.setVisibility(View.INVISIBLE);
}
if (endCard != null) {
endCard.setVisibility(View.VISIBLE);
}
}
Примечание: требуется по крайней мере версия 1.3.0-alpha01
.