Я использую ExtendedFloatingActionButton
со значком и текстом, как показано ниже
<androidx.coordinatorlayout.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ShopFragment">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/shop_recyclerview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical">
</androidx.recyclerview.widget.RecyclerView>
<TextView
android:id="@+id/shop_nodata"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="No shopping found"
android:textSize="22sp"
android:layout_gravity="center"
android:gravity="center"
android:visibility="gone"/>
</FrameLayout>
<com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton
android:id="@+id/shop_fab"
style="@style/Widget.MaterialComponents.ExtendedFloatingActionButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_margin="8dp"
android:contentDescription="New shopping desc"
android:text="New Shopping"
app:icon="@drawable/common_full_open_on_phone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
Его анимация для shrink()
и extend()
работает нормально и плавно для моего эмулятора (Pixel API 28), но не для физического устройства (LGE LM-X410.F Android 7.1.2, API 25).
На физическом устройстве ExtendedFloatingActionButton
либо полностью расширен, либо полностью сокращен без перехода или анимации между ними.
Итак, мой вопрос: как добавить плавную анимацию при расширении / сжатии ExtendedFloatingActionButton
на физическом устройстве?
Ниже показано, как называются методы shrink()
/ extend()
:
shopRecyclerview.setOnScrollChangeListener(new View.OnScrollChangeListener() {
@Override
public void onScrollChange(View v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {
//Log.i(TAG, "onScrollChange: x: " + scrollX + ", y: " + scrollY + ", ox: " + oldScrollX + ", oy: " + oldScrollY);
if (scrollY > oldScrollY) {
//Log.i(TAG, "onScrollChange: scrollY > 0");
FAB.shrink();
} else if (scrollX == scrollY) {
//Log.i(TAG, "onScrollChange: scrollY < 0");
FAB.extend();
} else {
//Log.i(TAG, "onScrollChange: ELSE");
FAB.extend();
}
}
});
Я ценю любую помощь.