編集:報奨金を追加しました。うまくいけば、これは目前の問題にいくらかの注意を引くでしょう。
私は現在、眠っている赤ちゃんをアニメーション化するアプリケーションのメイン画面でアニメーションが継続的に実行されるという問題を解決しようとしています。これは、imageViewを作成し、アニメーション内の現在の画像を次の行に置き換えることによって行われます。500を超える画像があるため、画像が置き換えられるたびにView Hierachy全体が再計算されるため、CPUに非常に負荷がかかります。このアニメーション中にビュー階層全体を再計算しない方法はありますか?
runメソッドは次のようになります。
@Override
public void run() {
if (bitmap != null) {
bitmap.recycle();
}
final String name = String.format(Locale.ENGLISH, pattern, current);
final int id = getResources().getIdentifier(name, "drawable", getPackageName());
if (id != 0) {
bitmap = BitmapFactory.decodeResource(getResources(), id);
view.setImageBitmap(bitmap);
}
current++;
if (runAgain()) {
frameCounter++;
long nextAt = firstFrameAt + (frameCounter * interval);
long delay = nextAt - SystemClock.elapsedRealtime() - 1;
if (delay > 0) {
handler.postDelayed(this, delay);
} else {
this.run();
}
}
}
編集:私は独自のカスタムImageViewを作成し、問題の原因となるメソッドをオーバーライドすることを考えていました。これは実行可能な解決策でしょうか?