2011-07-28 10 views
0

私はhandlerを使って、単純に遅れた間隔で投稿し、描画可能なリソースの配列を循環させ、それに応じてimageResourceを設定します。それはうまく動作しますが、 "アニメーション"はスーパースムーズではありません。このタイプのアニメーションを実装するための他の方法がありますか?私はフリップブックのようなイメージをたっぷりと読み込んでいますか?フリップブックスタイルのアニメーションを実装するためのより良い方法は?

答えて

0

あなたが望むものは、Androidでは「フレームアニメーション」と呼ばれます。画面上に表示する画像と時刻は、XMLファイルで定義されています。詳細は下記のリンクを参照してください:ここで

http://developer.android.com/guide/topics/resources/animation-resource.html#Frame

は、私はそれが私が書いた簡単なテストアプリで実行されている方法です。

setContentView(R.layout.main); 
    ImageView rocketImage = (ImageView) findViewById(R.id.imageView1); 
    rocketImage.setBackgroundResource(R.drawable.jena); 
    rocketAnimation = (AnimationDrawable) rocketImage.getBackground(); 

その後、私の描画可能なフォルダの中に、私はjena.xmlを持っています:

<animation-list xmlns:android="http://schemas.android.com/apk/res/android" 
    android:oneshot="false"> 
    <item android:drawable="@drawable/jenaveve0000" android:duration="500"/> 
<item android:drawable="@drawable/jenaveve0001" android:duration="500"/> 
<item android:drawable="@drawable/jenaveve0002" android:duration="500"/> 
<item android:drawable="@drawable/jenaveve0003" android:duration="500"/> 
<item android:drawable="@drawable/jenaveve0004" android:duration="500"/> 
<item android:drawable="@drawable/jenaveve0005" android:duration="500"/> 
<item android:drawable="@drawable/jenaveve0006" android:duration="500"/> 
<item android:drawable="@drawable/jenaveve0007" android:duration="500"/> 
<item android:drawable="@drawable/jenaveve0008" android:duration="500"/> 
<item android:drawable="@drawable/jenaveve0031" android:duration="500"/> 
<item android:drawable="@drawable/jenaveve0032" android:duration="500"/> 
<item android:drawable="@drawable/jenaveve0033" android:duration="500"/> 
<item android:drawable="@drawable/jenaveve0034" android:duration="500"/> 
<item android:drawable="@drawable/jenaveve0035" android:duration="500"/> 
<item android:drawable="@drawable/jenaveve0036" android:duration="500"/> 
</animation-list> 

アニメーションを開始するために私が持っている:

public void onWindowFocusChanged(boolean hasFocus) { 
    // TODO Auto-generated method stub 
    super.onWindowFocusChanged(hasFocus); 
    rocketAnimation.start(); 
+0

それは間違いなく、それは何らかの理由で動作を拒否します。私はアニメーションのDrawable.addFrameのようにプログラムで行いました...そして、start()を呼び出しましたが、最初のフレームしか表示されません。私はHandlerを使ってうまくいく。 (AnimationDrawable自体はおそらくHandler自体を使用しているに過ぎませんが、 – LuxuryMode

0

として下記をご覧になってください: http://code.google.com/p/android-page-curl/

を、私はこのページカール効果は大きいと思います。

+0

ありがとうアウトマン。 Flipbookはおそらく誤解を招く用語でした。私は、ページフリップ効果は必要ありません。私は動いているアニメーションの効果を与えるためにイメージを次々に設定しています。それぞれのイメージはちょっと違っています...私は何を意味するか知っています。これをよりスムーズにするための最適化や別のアプローチがあるかどうかは不思議です。 – LuxuryMode

+0

私はあなたが意味するものを得ました。ビットマップまたはドロウアブルキャッシュが役立つかもしれませんか? WeakHashMap と同じようにmCache = new WeakHashMap ();バックグラウンドスレッドを開始してキャッシュを維持し、キャッシュからイメージをロードします。 – outman

関連する問題