0

私は非常に基本的なことをしようとしています。ボタンがクリックされたときに、Android アプリケーションの xml リソース ファイルから単純なトゥイーン アニメーションを実行しようとしています。アプリを実行してもアニメーションが開始されません。私はその理由を理解しようとして気が狂います。

res/anim/spin.xml ファイルは次のとおりです。

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http:schemas.android.com/apk/res/android"
    android:shareInterpolator="false">

    <rotate
        android:fromDegrees="0"
        android:pivotX="50%"
        android:pivotY="50%"
        android:repeatCount="infinite"
        android:toDegrees="360" />

</set>

これが私の活動クラスです:

    package jorge.jorge.jorge;

    import android.app.Activity;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.view.animation.Animation;
    import android.view.animation.AnimationUtils;
    import android.widget.Button;
    import android.widget.ImageView;

    public class Assignment5Activity extends Activity {
        /** Called when the activity is first created. */

        @Override

        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);



            final Button btnSpin = (Button) findViewById(R.id.button1);
            btnSpin.setText("Start");
            btnSpin.setOnClickListener(new OnClickListener() {
                public void onClick(View v) 
                {


                    ImageView iv = (ImageView) findViewById(R.id.imageView1);
                    Animation an =    AnimationUtils.loadAnimation(Assignment5Activity.this, R.anim.spin);

                    iv.startAnimation(an);

                    if (an.hasStarted())
                    {
                        btnSpin.setText("Stop");
                    }
                    else
                    {
                        iv.startAnimation(an);
                    }
                }
            } ); 

        }

    }
4

5 に答える 5

0

これを試して

final ImageView iv = (ImageView) findViewById(R.id.imageView1);
                    Animation an =        AnimationUtils.loadAnimation(Assignment5Activity.this, R.anim.spin);

 btnSpin.setOnClickListener(new OnClickListener() {
                public void onClick(View v) 
                {




                    iv.startAnimation(an);

                    if (an.hasStarted())
                    {
                        btnSpin.setText("Stop");
                    }
                    else
                    {
                        iv.startAnimation(an);
                    }
                }
            } ); 
于 2012-06-27T18:28:26.660 に答える
0

解決:

spin.xmlは xml と同じままです。
ボタンの でこのコードを実行しますOnClickListener

ImageView iv = (ImageView) findViewById(R.id.imageView1);
Animation an = AnimationUtils.loadAnimation(Assignment5Activity.this, R.anim.spin);
iv.startAnimation(an);
于 2012-06-27T19:50:02.663 に答える
0

RotateAnimationを使用して、ピボット ポイントを画像の中心に設定します。

RotateAnimation anim = new RotateAnimation(0f, 350f, 15f, 15f);
anim.setInterpolator(new LinearInterpolator());
anim.setRepeatCount(Animation.INFINITE);
anim.setDuration(700);

// Start animating the image
final ImageView iv = (ImageView) findViewById(R.id.imageView1);
iv.startAnimation(anim);

// Later.. stop the animation
iv.setAnimation(null);
于 2012-06-27T18:41:48.423 に答える
0

android:toDegrees を 360 から 359 に変更してみましたか? Android にとって、次数 0 は 360 と同じです。これは、数列が 1 ではなく 0 から始まるためです。基本的に、現在の設定が 360 の場合、次数 0 から次数 360 に移動するように指示することは、そのままにしておくように指示することと同じです。

    <rotate
        android:fromDegrees="0"
        android:pivotX="50%"
        android:pivotY="50%"
        android:repeatCount="infinite"
        android:toDegrees="359" />
于 2014-04-12T00:09:32.347 に答える
0

アニメーションの長さを指定します。デフォルトでは0だと思います(デフォルトで〜300ミリ秒のプロパティアニメーションとは対照的に)。

さらに、NineOldAndroids を使用して、はるかに優れた ViewPropertyAnimator アプローチをハニカム以前にバックポートできます。

于 2013-06-25T20:30:47.993 に答える