#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);
Комментариев нет:
Отправить комментарий