2012-10-09 3 views
0

У меня есть список анимаций, состоящий из изображений (слегка) разных размеров. И у меня есть ImageView с layout_width и layout_height набор как wrap_content. Я установил список анимации, чтобы быть содержанием моей ImageView и запустить анимацию следующим образом:AnimationDrawable для списка анимации с различными размерами?

AnimationDrawable my_animation_list = (AnimationDrawable)getResources().getDrawable(
    R.drawable.my_animation_list); 

myImageView.setImageDrawable(my_animation_list) 
((AnimationDrawable)myImageView.getDrawable()).start(); 

я требовать и ожидать, что ImageView регулировать его высоту и ширину с каждым кадром/изображениями в списке анимации. Вместо этого он выглядит так: ImageView принимает высоту и ширину первого кадра в списке анимации, а затем масштабирует все кадры в списке анимации, чтобы соответствовать этой начальной высоте и ширине. Кто-нибудь знает, как я могу получить AnimationDrawable (список анимации), состоящий из различных изображений размера для работы с ImageView или обходным даже? ..

ответ

1

То, что я сделал в конце концов, должен был создать мой AnimationDrawable из моего animation-list, как и раньше, как следует ...

// declaration in activity 
private AnimationDrawable my_animation_list; 

// load animation list in onCreate() method of activity or elsewhere 
my_animation_list = (AnimationDrawable)getResources().getDrawable(
    R.drawable.my_animation_list); 

... Тем не менее, вместо того, чтобы назначить этот AnimationDrawable к моему ImageView, а затем запустить его (как в моем вопросе), что я в настоящее время сделать это вручную назначить кадр в списке анимации к моему ImageView, как следует ...

myImageView.setImageDrawable(my_animation_list.getFrame(myCurrentFrameIndex)); 
myCurrentFrameIndex++; 

... И я использую Handler для отправки/приема/процесса последовательных Message экземпляров для обновления отображения кадров, определения длительности каждого кадра следующим образом:

my_animation_list.getDuration(myCurrentFrameIndex); 
0

Не самое веселое, чтобы сделать, но вы можете обернуть ваши растровые изображения в InsetDrawables, чтобы сделать их того же размера. Скорее всего, легче исправить растровые изображения. Я не смотрел на код AnimationDrawable, так что может быть более эффективные способы ...

Смежные вопросы