1

デフォルトの画像を含む画像ビューがあります。クリックしようとすると、4フレームの画像を表示するアニメーションが必要になります。これを達成するにはどうすればよいでしょうか。イメージリソースを 4 回変更することで、より単純なアプローチ (もっとばかげたアプローチ) を試しました。何か案は?

私はこのアプローチを試しました:

Gem = (ImageView)v;
    Gem.setImageResource(com.example.gems.R.drawable.bd1);
    Gem.postDelayed(new Runnable() {
        public void run() {
            Gem.setImageResource(com.example.gems.R.drawable.bd2);
            Gem.postDelayed(new Runnable() {
                public void run() {
                    Gem.setImageResource(com.example.gems.R.drawable.bd3);
                    Gem.postDelayed(new Runnable() {
                        public void run() {
                            Gem.setImageResource(com.example.gems.R.drawable.bd4);
                            Gem.postDelayed(new Runnable() {
                                public void run() {
                                }
                            }, 500);
                        }
                    }, 500);
                }
            }, 500);
        }
    }, 500);

うまくいきましたが、あまり多くの行をコーディングせずにこれを行うより良い方法はありますか? 25種類の画像があり、各画像には4つのフレームがあります。

編集:

私はxmlトランジションファイルを使用してみました:

Java ファイル:

Resources res = this.getResources();
    Gem = (ImageView)v;
    TransitionDrawable transition;

    transition = (TransitionDrawable)
            res.getDrawable(R.drawable.blue_diamond_animation);
    Gem.setImageDrawable(transition);
    transition.startTransition(3000);

xml ファイル:

 <transition xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:drawable="@drawable/bd1"></item>
  <item android:drawable="@drawable/bd2"></item>
  <item android:drawable="@drawable/bd3"></item>
  <item android:drawable="@drawable/bd4"></item>
  <item android:drawable="@drawable/invi"></item>
 </transition>

これは機能しているように見えますが、トランジションでこの画像を描画したくありません。トランジションで背景を変更したい。これをに変更しようとしandroid:drawableましたandroid:drawableが、うまくいきません。

4

2 に答える 2

2

これには正確なクラスがあることがわかりました: AnimationDrawable

基本的には、アニメーションで使用する他の画像を含むフレームをAnimationDrawableオブジェクトに追加し、使用して表示する時間を指定するだけですaddFrame(Drawable frame, int duration)

次に、ImageView開始する画像を表示するように を設定し、AnimationDrawable使用して作成したばかりの に背景を設定しますsetBackgroundDrawable(Animation)

最後に、onClickリスナーでアニメーションを開始します

編集:例として

AnimationDrawable ad = new AnimationDrawable();
ad.addFrame(getResources().getDrawable(R.drawable.image1), 100);
ad.addFrame(getResources().getDrawable(R.drawable.image2), 500);
ad.addFrame(getResources().getDrawable(R.drawable.image3), 300);

ImageView iv = (ImageView) findViewById(R.id.img);
iv.setBackgroundDrawable(animation);

そして、onClickリスナーで、呼び出すだけですad.start

于 2013-01-18T15:24:17.673 に答える
0

それはあなたが達成しようとしていることに依存します。続行するのに十分な情報が提供されていません

viewproperty アニメーターは、実際に使用する最も簡単なものです。また、nineoldandroids jar を使用して古い API で使用することもできます (google it)

http://developer.android.com/reference/android/view/ViewPropertyAnimator.html

ObjectAnimator と ValueAnimator も同様に利用できますが、実装が少し難しくなります

http://developer.android.com/reference/android/animation/ObjectAnimator.html http://developer.android.com/reference/android/animation/ValueAnimator.html

サンプル パックの APIdemo を見てください。主に ValueAnimator を使用した例がいくつかあります。 http://developer.android.com/tools/samples/index.html

考慮すべきスプライトもありますが、基本的にはビットマップであり、タイマーオブジェクトを使用して振り付けを行うことができます

于 2013-01-18T15:19:52.407 に答える