Как анимировать плавающую кнопку действия при изменении вкладок в макете вкладок? - PullRequest
0 голосов
/ 17 июня 2020

Я создал плавающую кнопку действия внутри ViewPager в activity_main. xml

<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"
    android:background="@color/colorSecondaryLight"
    tools:context=".MainActivity">

    <com.google.android.material.appbar.AppBarLayout
        android:id="@+id/app_bar_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        >

        <com.google.android.material.tabs.TabLayout
            android:id="@+id/tab_layout"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@color/colorSecondaryLight"
            style="@style/WakeMe.TabLayout"
            android:elevation="8dp"/>
    </com.google.android.material.appbar.AppBarLayout>

    <androidx.viewpager.widget.ViewPager
        android:id="@+id/view_pager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior"/>


    <androidx.coordinatorlayout.widget.CoordinatorLayout
        android:id="@+id/coordinator_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom">

        <com.google.android.material.floatingactionbutton.FloatingActionButton
            android:id="@+id/add_alarm_fab"
            android:layout_width="121dp"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_margin="16dp"
            android:backgroundTint="@color/colorWhite"
            android:tint="@color/colorPrimary"
            app:borderWidth="0dp"
            app:rippleColor="@color/colorPrimaryLight"
            app:srcCompat="@drawable/ic_add"
            />

        <com.google.android.material.floatingactionbutton.FloatingActionButton
            android:id="@+id/start_timer_fab"
            android:layout_width="121dp"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_margin="16dp"
            android:backgroundTint="@color/colorWhite"
            android:tint="@color/colorPrimary"
            app:borderWidth="0dp"
            app:rippleColor="@color/colorPrimaryLight"
            app:srcCompat="@drawable/ic_play"

            />
        <com.google.android.material.floatingactionbutton.FloatingActionButton
            android:id="@+id/start_stopwatch_fab"
            android:layout_width="121dp"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_margin="16dp"
            android:backgroundTint="@color/colorWhite"
            android:tint="@color/colorPrimary"
            app:borderWidth="0dp"
            app:rippleColor="@color/colorPrimaryLight"
            app:srcCompat="@drawable/ic_play"

            />

    </androidx.coordinatorlayout.widget.CoordinatorLayout>

</androidx.coordinatorlayout.widget.CoordinatorLayout>

Чтобы показать эффект анимации, я добавил addOnTabSelectedListener в tabLayout

tabLayout.addOnTabSelectedListener()

каждый раз, когда вкладка выбрана следующая функция:

private void animateFab(int position) {
        switch (position) {
            case 0:
                fab_alarm.show();
                fab_start_timer.hide();
                fab_start_stopwatch.hide();
                break;
            case 1:
                fab_alarm.hide();
                fab_start_timer.show();
                fab_start_stopwatch.hide();
                break;
            case 2:
                fab_alarm.hide();
                fab_start_timer.hide();
                fab_start_stopwatch.show();
                break;
        }
    }

Но когда вкладка изменяется в первый раз, она не работает, после этого она работает нормально. что я здесь делаю не так?

...