Android ImageView с исходным кодом AnimationDrawable изменяет размер - PullRequest
3 голосов
/ 01 февраля 2011
  1. Я сделал набор из 3 изображений, которые будут изображать движение животного. Каждое изображение представляет собой рамку и состоит только из животного с прозрачным фоном.

  2. Я создал AnimationDrawable в коде и создал анимацию:

    AnimationDrawable staticAnimation = new AnimationDrawable();
    staticAnimation.addFrame(ctx.getResources().getDrawable("frame1"),150);
    staticAnimation.addFrame(ctx.getResources().getDrawable("frame2"),150);
    staticAnimation.addFrame(ctx.getResources().getDrawable("frame3"),150);
  3. Я устанавливаю анимацию в качестве фона для просмотра изображений и запускаю ее

    imgAnimal.setBackgroundDrawable(staticAnimation );
    staticAnimation.start()

Поскольку рамки имеют разную ширину (рисунок должен воссоздать шаги, перемещайтесь), похоже, что Imageview изменяет размеры изображений в анимации. Проще говоря, если frame1 больше, чем frame2, frame 1 отображается нормально, но frame 2 растягивается до размера, равного frame1. Выглядит действительно ужасно.

Есть предложения о том, как остановить это поведение? Спасибо.

1 Ответ

2 голосов
/ 03 февраля 2011

Решение было довольно простым, потому что изображения в кадрах имеют одинаковую высоту, но разную ширину, я просто сделал прямоугольник с прозрачной рамкой и поместил его на каждый кадр. В этом случае каждый кадр будет иметь одинаковую ширину, и аниматин будет работать так, как предполагается.

...