如何使用动画将Android中的图像缩放到特定的高度和宽度

时间:2016-07-24 13:45:44

标签: android animation android-animation objectanimator

我想将imageView设置为粒子大小(另一个imageView的高度和宽度)。我觉得这很容易,但我找不到任何合适的解决方案。

我尝试过:

ObjectAnimator scaleX = ObjectAnimator.ofFloat(img1, "scaleX", (float) img2.getWidth());
ObjectAnimator scaleY = ObjectAnimator.ofFloat(img1, "scaleY", (float) img2.getHeight());
scaleX.setDuration(2000);
scaleY.setDuration(2000);
AnimatorSet scale = new AnimatorSet();
scale.play(scaleX).with(scaleY);
scale.start();

2 个答案:

答案 0 :(得分:0)

ValueAnimator valueAnimator = ValueAnimator.ofFloat(0.0f, 1.0f);
    valueAnimator.setDuration(2000);
    valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
        @Override
        public void onAnimationUpdate(ValueAnimator animation) {
            float scale = Float.parseFloat(animation.getAnimatedValue().toString());
            img2.setScaleX(scale);
            img2.setScaleY(scale);
        }
    });
    valueAnimator.start();

您不需要对象动画师。您可以使用valueanimator为对象设置动画。

在制作动画之前,不要忘记在您的视图中设置轴心。枢轴应该是中心坐标" x,y"你的观点。

答案 1 :(得分:0)

最简单的方法是使用ViewPropertyAnimator

img1.animate().scaleX(toX).scaleY(toY).setDuration(2000);

img1.animate().scaleXBy(byX).scaleYBy(byY).setDuration(2000);

或者您可以使用ScaleAnimation。 下面是最短构造函数的简短示例:

ScaleAnimation sa = new ScaleAnimation(fromX , toX , fromY , toY);
sa.setDuration(2000);
img1.startAnimation(sa);

但是我会推荐第一个,因为它的代码较少而且ScaleAnimation只移动屏幕上的像素,因此它没有真正缩放,只是看起来像它,而ViewPropertyAnimator确实缩放了视图。