Android: Как создать вертикальную анимацию для FAB с BottomAppBar? - PullRequest
0 голосов
/ 31 октября 2018

BottomAppBar виджет из библиотеки поддержки в com.android.support пакет имеет isFabAttached флаг и метод. В версии 28.0.0-alpha1 он имеет публичный доступ. Но после выпуска стабильной версии 28.0.0 она больше не доступна.

Я использовал bottomAppBar.isFabAttached = false для анимированного отсоединения и bottomAppBar.isFabAttached = true для вертикальной анимации прикрепления. Но после обновления до com.android.support:design:28.0.0 isFabAttached имеет частный доступ и в результате анимация не работает. Пока доступна только горизонтальная анимация.

Как анимировать потрясающую кнопку, как на картинке, для последней версии библиотеки com.android.support:design:28.0.0?

enter image description here


ОБНОВЛЕНИЕ : проблема решена, я скопировал код из BottomAppBar и создал собственное представление: CustomBottomAppBar в android.support.design.bottomappbar пакет и добавили следующий код:

public void setFabAttached(boolean attached) {
    maybeAnimateAttachChange(attached);
    maybeAnimateMenuView(fabAlignmentMode, attached);
    this.fabAttached = attached;
}

private void maybeAnimateAttachChange(boolean targetAttached) {
    if (fabAttached == targetAttached || !ViewCompat.isLaidOut(this)) {
        return;
    }

    if (attachAnimator != null) {
        attachAnimator.cancel();
    }

    List<Animator> animators = new ArrayList<>();

    createCradleShapeAnimation(targetAttached, animators);
    createFabTranslationYAnimation(targetAttached, animators);

    AnimatorSet set = new AnimatorSet();
    set.playTogether(animators);
    attachAnimator = set;
    attachAnimator.addListener(
            new AnimatorListenerAdapter() {
                @Override
                public void onAnimationEnd(Animator animation) {
                    attachAnimator = null;
                }
            });
    attachAnimator.start();
}
...