0

Android アプリで無限回転アニメーションを使用しています。cancelAnimation()回転した画像を呼び出すとImageView、アニメーションをその位置にファイナライズせずに、画像がすぐにアニメーションの開始位置に移動します。ユーザーがアニメーションを中断することなく、よりスムーズなエクスペリエンスを得るために、それを実行する方法はありますか?

4

1 に答える 1

0

旗を立てることができます。フラグを false に設定すると、アニメーションが停止します。以下のコードを見てください。

public class MainActivity extends Activity {
    ImageView img;
    Button btn, btn2;
    Animation myAnim;   
    boolean flag=true;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        img = (ImageView) findViewById(R.id.imageView1);
        btn = (Button) findViewById(R.id.button1);
        btn2 = (Button) findViewById(R.id.button2);

        myAnim = AnimationUtils.loadAnimation(this, R.anim.rotate);

        img.startAnimation(myAnim);

        myAnim.setAnimationListener(new AnimationListener() {

            public void onAnimationStart(Animation animation) {
                System.out.println("onAnimationStart()");
            }

            public void onAnimationRepeat(Animation animation) {
                if(flag)
                    System.out.println("onAnimationRepeat()");
                else
                    myAnim.cancel();
            }

            public void onAnimationEnd(Animation animation) {
                System.out.println("onAnimationEnd()");
            }
        });

        btn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                flag=false;
            }
        });

        btn2.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                 img.startAnimation(myAnim);
                 flag=true; 
            }
        });
    }

}
于 2012-12-22T14:59:32.587 に答える