编辑:增加了赏金。希望这会引起人们对手头问题的关注。
我目前正在尝试解决一个动画在应用程序的主屏幕上连续运行动画婴儿睡觉的问题。这是通过使用 imageView 并将动画中的当前图像替换为下一个图像来完成的。鉴于有超过 500 张图像,这变得非常占用 CPU,因为每次替换图像时都会重新计算整个视图层次结构。有没有办法在这个动画期间不重新计算整个视图层次?
运行方法如下所示:
@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 并覆盖导致问题的任何方法。这会是一个可行的解决方案吗?