Android: Как создать вертикальную анимацию для FAB с BottomAppBar?

Виджет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 библиотека?


ОБНОВЛЕНИЕ: проблема решена, я скопировал код из 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();
}

0 ответов

Другие вопросы по тегам