我有这段代码,我想同时旋转和缩放ImageView

public class LayoutPunteggio extends RelativeLayout {

TextView ok;
LayoutInflater inflater;
RotateAnimation rotateAnimation1;

public LayoutPunteggio(Context context) {
    super(context);
    inflater = LayoutInflater.from(context);
    init();
}


public void init() {
    mano = new ImageView(getContext());
    mano.setImageResource(R.drawable.mano);
    mano.setX(100);
    mano.setY(100);
    addView(mano);

    startScale(mano);
    rotate();
}

public void rotate() {
    rotateAnimation1.setInterpolator(new LinearInterpolator());
    rotateAnimation1.setDuration(1000);
    rotateAnimation1.setRepeatCount(-1);
    mano.startAnimation(rotateAnimation1);
}

public void startScale(View view){
    ScaleAnimation animation;
    animation=new ScaleAnimation(1,2,1,2,1000, 1000);
    animation.setDuration(1000);
    view.startAnimation(animation);
}
}


我尝试先应用方法rotate(),然后应用startScale(),但这不适用于两种方法。

有没有人有办法解决吗?

最佳答案

您可以使用名为NineOldAndroids的库。
那里有AnimatorSet的playTogether函数。

AnimatorSet animation = new AnimatorSet();
animation.playTogether(
   ObjectAnimator.ofFloat(yourImageView, "rotation", 0, 360),
   ObjectAnimator.ofFloat(yourImageView, "scaleX", 1, 2f),
   ObjectAnimator.ofFloat(yourImageView, "scaleY", 1, 2f)
);
animation.setDuratio(1000);
animation.start();


您还可以添加一个侦听器

animation.addListener(new AnimationListener(){
   onAnimationStart....
   onAnimationRepeat...
   onAnimationEnd...
   onAnimationCancel...
});

07-24 14:43