Я ищу способы ускорить несколько анимаций.
Я сталкивался с этой статьей , в которой мимоходом упоминается, что сохранение большого растрового изображения в статическом поле может помочь со временем загрузки приложения (см. Параграф 4).
Каким будет эквивалентный метод для AnimationDrawable?
Можно ли даже предварительно загрузить кадры в анимации, которую можно нарисовать? Они предварительно загружены по умолчанию? Поможет ли это мне ускорить процесс?
Я запускаю анимацию кадров, которая состоит из .png размером 256x256, они уменьшаются до размера изображения, которое, как я предполагаю, составляет около 100x100, это изменится, когда приложение будет использоваться на устройство с размером экрана, отличным от моего, но размер этого изображения 100x100 не изменится после вызова метода onCreate моего приложения.
Решение: Я изменил принятое решение следующим образом, чтобы я мог использовать стандартный формат анимации, который использует Android (и что у меня уже были закодированы мои анимации):
public Bitmap[] setAnimationArray(int res_anim){
this.my_view.setBackgroundResource(res_anim); //view sized properly elsewhere
AnimationDrawable t_anim = (AnimationDrawable) this.my_view.getBackground();
Bitmap[] anim = new Bitmap[t_anim.getNumberOfFrames()];
for(int i = 0;i<t_anim.getNumberOfFrames();i++){
anim[i]=((BitmapDrawable) t_anim.getFrame(i)).getBitmap(); //extract bitmaps from the animation
}
return anim;
Редактировать: к ответу ниже я хотел бы добавить, что выполнение анимации в виде поверхности вручную кажется намного быстрее, чем анимация с использованием стандартных методов. Поиск Android SurfaceView для получения дополнительной информации.