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();
}