1

一度に約 20 個のアニメーション化 (再配置およびサイズ変更) される多くの (時には最大約 200 個の) 小さな画像を含む Android アプリを作成しようとしています。その後、彼らはじっとしています。

View クラス アニメーションの単純なソリューションを使用する必要がありますか、それとも Drawable アニメーションを使用する必要がありますか?

編集:もっと具体的にする必要があります..

そこにはたくさんのチュートリアルがあり、同じことを行うためのさまざまな方法があります。次のシナリオを実装するための最良の方法を探しています:

現在、画面に 50 個の異なる小さな (30x30) 画像が描画されているとします。それらをアニメーション化して、別の動的位置に変換する必要があります。そして、それらが動いている間、画像を上下にサイズ変更する必要があります(上から見ると、一種のジャンプ効果が得られます)。特定の時間枠内で移動する必要があります。例: 最初の画像が動き始めた後、2 番目の画像は最後の画像から 50 ミリ秒後に移動し始めます (波の効果)... 画像の 1 つのグループが変換された後、別のグループが形成されますが、最後のグループは引き続き移動します。画面に表示されます。

だから私が求めているのは、これを行うための最良の方法について少し具体的なことです. 例: 各画像の XML ファイルを作成する必要がありますか?それともコードで読み込むだけですか? アプリケーションの起動時にすべての画像 (最大 200 個の小さな画像、場合によってはそれ以上) をロードする必要がありますか?それともオンデマンドでロードしても問題ありませんか? 最高のアニメーション技術は何でしょうか? そのようなもの。

4

2 に答える 2

1

私が見つけた最も簡単な解決策: (API 16+)

Runnable endAction = new Runnable() {
     public void run() {
         tv.animate().x(400).y(1400).scaleX(1).scaleY(1);
     }
 };
tv.animate().x(600).y(100).scaleX(3).scaleY(3).withEndAction(endAction);
于 2013-07-27T16:25:52.033 に答える
0

Drawable アニメーションを使用しますが、それほど重要ではありません。アプリの実行が非常に遅い場合に行うべき重要なことは、たとえば次のコードを使用して異なるスレッドを使用することです。

Handler mHandler = new Handler();
        mHandler.post(new Runnable() {
                   public void run() {
                       //YOUR ANIMATION HERE
                    }
                 });            

このようにして、電話機が異なるコンピューティング スレッドでコードを実行するため、同時に多くの画像のアニメーションを処理することができます。

そのように AsyncTask も使用できます(クラスをアクティビティクラスに追加します):

private class doAnimation extends AsyncTask<ImageView, Void, Void>{


     @Override
     protected Void doInBackground(ImageView... image) {
         image.startAnimation(animation);
         return null;
    }

}

そして、次を使用して呼び出します:

    new doAnimation().execute(image1);
    new doAnimation().execute(image2);
    new doAnimation().execute(image3);
    ...
于 2013-07-27T11:04:23.223 に答える