0

アクティビティの開始時にいくつかのアニメーション、具体的には別のイメージビューとテキストビューとともに、フェードインするスマイリーフェイスを取得しようとしています。ただし、onCreate でこれをすべて実行すると、アプリケーションがフリーズすることが予想されるため、すべてのアニメーションを AsyncTask に移動して、作成時に実行しようとしました。

ここで私はアニメーションを呼び出します:

public class Animtask extends AsyncTask<Void, Void, Void> {
 protected Void doInBackground(Void... voids) {
Animation fadein = AnimationUtils.loadAnimation(this, R.anim.fade);
_view.startAnimation(fadein);
_view2.startAnimation(fadein);
_view3.startAnimation(fadein);
_view4.startAnimation(fadein);
_view5.startAnimation(fadein);
guide.startAnimation(fadein);
blender.startAnimation(fadein);
}
}

Eclipse は他のすべてに同意しているようですが、loadAnimation が問題を引き起こしているため、メソッドが引数に適用できないことが示唆されています。私がひどく間違った場所を一目でわかる人はいますか? 関連性があると思われる場合は、他のものを投稿します。

4

1 に答える 1

0
Animation fadein = AnimationUtils.loadAnimation(this, R.anim.fade);

ここでのキーワードは、 を拡張して作成しthisたクラスを指しますが、メソッドは class のオブジェクトを必要としています。アクティビティのクラス名が MyActivity であると仮定すると、上記の行を次のように変更することでコンパイル エラーを解決できる可能性があります。AnimtaskAsyncTaskloadAnimationContext

Animation fadein = AnimationUtils.loadAnimation(MyActivity.this, R.anim.fade);

ただし、 のdoInBackgroundメソッドAsyncTaskは UI スレッドに触れることは想定されていないため、この AsyncTask を実行しようとすると、おそらくこのエラーが発生します。スローダウンは本当にアニメーションだけが原因なのか、それともアニメーションのリソース (画像) の読み込みが原因なのか? 解決策は、アニメーション呼び出しをonPostExecuteメソッドに移動し、メソッドにリソースをロードすることdoInBackgroundです。

于 2013-04-29T03:48:09.483 に答える