У меня есть layout в котором есть CardView внутри которого лежит, скажем, картинка.
Я хочу увеличить высоту и ширину этой CardView вместе с анимацией так как это делают в Material Design Guidelines
Я пробовал 2 способа:
cardView.animate().scaleX().scaleY() - этот способ изменяет размер CardView но вместе с ним и изменяется размер всего, что внутри его даже если у содержимого выставлена специфичная ширина и высота;
можно сделать cardView.getLayoutParams() и потом изменить height и width или можно добавить margin - это действительно меняет размер, но непонятно как это анимировать.
Весьма странно, но я не нашел никаких стоящих рецептов в гугле.
Ответ
Можно воспользоваться вот этим способом с gitHub-а:
Создаём анимацию изменения параметров View:
public class ResizeAnimation extends Animation {
final int startWidth;
final int targetWidth;
View view;
public ResizeAnimation(View view, int targetWidth) {
this.view = view;
this.targetWidth = targetWidth;
startWidth = view.getWidth();
}
@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
int newWidth = (int) (startWidth + (targetWidth - startWidth) * interpolatedTime);
view.getLayoutParams().width = newWidth;
view.requestLayout();
}
@Override
public void initialize(int width, int height, int parentWidth, int parentHeight) {
super.initialize(width, height, parentWidth, parentHeight);
}
@Override
public boolean willChangeBounds() {
return true;
}
}
Применяем её:
ResizeAnimation resizeAnimation = new ResizeAnimation(view, targetSize);
resizeAnimation.setDuration(600);
view.startAnimation(resizeAnimation);
Комментариев нет:
Отправить комментарий