Android 缩放动画不会';不要更改ImageView的大小

Android 缩放动画不会';不要更改ImageView的大小,android,android-animation,scale,Android,Android Animation,Scale,我正在创建一个应用程序,从资源中加载可绘制内容并将其显示在占位符ImageView中。 当用户单击按钮加载下一个图像时,我创建了一个动画,该动画将旧图像移动并缩放到新位置,并将新的可绘制图像加载到占位符 在30张图片之后,我正在运行OOM,这是有意义的 我试图做的是在动画结束后对每个图像重新采样,因为我从一个500X500的占位符开始,然后以它的1/3结束 问题是,在我完成动画之后,ImageView的宽度和高度保持不变。 缩放动画不应该更改ImageView的宽度和高度吗 以下是动画的代码:

我正在创建一个应用程序,从资源中加载可绘制内容并将其显示在占位符ImageView中。 当用户单击按钮加载下一个图像时,我创建了一个动画,该动画将旧图像移动并缩放到新位置,并将新的可绘制图像加载到占位符

在30张图片之后,我正在运行OOM,这是有意义的

我试图做的是在动画结束后对每个图像重新采样,因为我从一个500X500的占位符开始,然后以它的1/3结束

问题是,在我完成动画之后,ImageView的宽度和高度保持不变。 缩放动画不应该更改ImageView的宽度和高度吗

以下是动画的代码:

//创建动画
imageView.setPivotX(0);
imageView.setPivotY(0);
imageView.animate()
.scaleX(scaleX)//大约0.3
.scaleY(scaleY)//大约0.3
.x(finalX)//图像的位置x
.y(finalY)//图像的位置y
.setListener(新的Animator.AnimatorListener(){
@凌驾
AnimationStart(动画师动画)上的公共无效{
int reqWidth=imageView.getWidth();//结果按预期为500
int reqHeight=imageView.getHeight();//结果按预期为500
Drawable image=imageView.getDrawable();
}
@凌驾
AnimationEnd上的公共无效(Animator动画){
int reqWidth=imageView.getWidth();//结果500-为什么?
int reqHeight=imageView.getHeight();//结果500-为什么?
Drawable image=imageView.getDrawable();
}
@凌驾
onAnimationCancel(Animator动画){}
@凌驾
onAnimationRepeat(Animator动画)上的公共无效{}
});
scaleX()会将视图的scaleX属性设置为指定的值()。它不会直接更改布局宽度/高度值。()

通过与scaleX/Y值相乘,可以获得预期的宽度/高度值

//create the animation
    imageView.setPivotX(0);
    imageView.setPivotY(0);
    imageView.animate()
             .scaleX(scaleX) //about 0.3
             .scaleY(scaleY) //about 0.3
             .x(finalX) //location x of the image
             .y(finalY) //location y of the image
             .setListener(new Animator.AnimatorListener() {
                        @Override
                        public void onAnimationStart(Animator animation) {
                            int reqWidth = imageView.getWidth(); //result 500 as expected
                            int reqHeight = imageView.getHeight();//result 500 as expected
                            Drawable image = imageView.getDrawable();
                        }

                        @Override
                        public void onAnimationEnd(Animator animation) {
                            int reqWidth = imageView.getWidth() * imageView.getScaleX;
                            int reqHeight = imageView.getHeight() * imageView.getScaleY;
                            Drawable image = imageView.getDrawable();
                        }

                        @Override
                        public void onAnimationCancel(Animator animation) {}

                        @Override
                        public void onAnimationRepeat(Animator animation) {}
                    });

这是动画的全部代码吗?是的,我在这之后没有做任何其他事情that@Itamar如果答案有效,请接受(如果无效,请发表评论)。干杯。我没有意识到缩放并不是真的缩放图像,而是操纵它。是的,这相当令人惊讶。如果我不得不大胆猜测,那可能是为了提高性能。通过保持宽度和高度不变,当
视图
缩放时,无需计算布局更改。