Страницы

Поиск по вопросам

понедельник, 6 января 2020 г.

Как изменить размер CardView с анимацией?

#android #android_sdk #material_design #android_ui


У меня есть layout в котором есть CardView внутри которого лежит, скажем, картинка.

Я хочу увеличить высоту и ширину этой CardView вместе с анимацией так как это делают
в Material Design Guidelines

Я пробовал 2 способа:


cardView.animate().scaleX().scaleY() - этот способ изменяет размер CardView но вместе
с ним и изменяется размер всего, что внутри его даже если у содержимого выставлена
специфичная ширина и высота;
можно сделать cardView.getLayoutParams() и потом изменить height и width или можно
добавить margin - это действительно меняет размер, но непонятно как это анимировать.


Весьма странно, но я не нашел никаких стоящих рецептов в гугле.
    


Ответы

Ответ 1



Можно воспользоваться вот этим способом с 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);

Комментариев нет:

Отправить комментарий