带有AnimationDrawable源码的Android Imageview会改变大小

时间:2011-02-01 18:45:13

标签: android animation drawable

  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. 我将动画设置为Imageview的背景并启动它

    imgAnimal.setBackgroundDrawable(staticAnimation );
    staticAnimation.start()
  4. 因为帧具有不同的宽度(绘图需要重新创建步骤移动),所以看起来Imageview会调整动画中的图像大小。更好的说,如果frame1比frame2大,则第1帧显示ok,但第2帧被拉伸到与frame1一样大。看起来很可怕。

    有关如何阻止此行为的任何建议?谢谢。

1 个答案:

答案 0 :(得分:2)

解决方案非常简单,因为帧中的图像具有相同的高度但宽度不同,我只是制作了一个透明的边框矩形并将其放在每个帧上。在这种情况下,每个帧将具有相同的宽度,并且animatin将按预期运行。