我想将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();
答案 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确实缩放了视图。