我制作了一组代表动物移动的3张图像。每个图像代表一个框架,仅包含具有透明背景的动物。
我在代码中创建了一个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);
我将动画设置为Imageview的背景并启动它
imgAnimal.setBackgroundDrawable(staticAnimation ); staticAnimation.start()
因为帧具有不同的宽度(绘图需要重新创建步骤移动),所以看起来Imageview会调整动画中的图像大小。更好的说,如果frame1比frame2大,则第1帧显示ok,但第2帧被拉伸到与frame1一样大。看起来很可怕。
有关如何阻止此行为的任何建议?谢谢。
答案 0 :(得分:2)
解决方案非常简单,因为帧中的图像具有相同的高度但宽度不同,我只是制作了一个透明的边框矩形并将其放在每个帧上。在这种情况下,每个帧将具有相同的宽度,并且animatin将按预期运行。