2016-07-24 55 views
0

我想要将imageView设置为微粒大小(另一个imageView的高度和宽度)。我认为这很容易,但我找不到任何合适的解决方案。如何在Android中将图像缩放到包含动画的高度和宽度

我曾尝试 -

 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(); 

回答

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”。

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真正缩放视图。

相关问题