Как сделать анимацию линейного раскрытия вместо анимации кругового раскрытия в Android?
Я хочу анимировать мою кнопку, которая показывает слева от кнопки справа от этого. То, что я хочу, это линейная анимация, а не круговая анимация. Пожалуйста, помогите мне. Благодарю.
Обновить
Я хочу два метода, которые показывают и скрывают вид, основанный на линейной анимации раскрытия.
1 ответ
Попробуйте код ниже для линейного эффекта раскрытия -
public class ViewAnimationUtils {
public static AnimatorSet createLinearReveal(final View viewToReveal, final int offsetWidth, final int offsetHeight, final int duration) {
viewToReveal.clearAnimation();
final int targetWidth = viewToReveal.getMeasuredWidth();
final int targetHeight = viewToReveal.getMeasuredHeight();
viewToReveal.getLayoutParams().height = offsetHeight;
viewToReveal.requestLayout();
final ValueAnimator heightAnimator = ValueAnimator
.ofInt(offsetHeight, targetHeight)
.setDuration(duration);
heightAnimator.addUpdateListener(animation -> {
viewToReveal.getLayoutParams().height = (int) animation.getAnimatedValue();
viewToReveal.requestLayout();
});
final ValueAnimator widthAnimator = ValueAnimator
.ofInt(offsetWidth, targetWidth)
.setDuration(duration);
widthAnimator.addUpdateListener(animation -> {
viewToReveal.getLayoutParams().width = (int) animation.getAnimatedValue();
viewToReveal.requestLayout();
});
final AnimatorSet set = new AnimatorSet();
set.playSequentially(widthAnimator, heightAnimator);
set.setInterpolator(new AccelerateInterpolator());
return set;
}
}
после добавления этого класса просто передайте свое представление значениям анимации и смещения методу createLinearReveal.