我计划使用AnimationDrawable为爆炸设置动画,并且我保存了大小不一的帧:
问题在于我最初将ImageView大小指定为wrap_content
,因此当我播放动画时,ImageView的大小保持不变,较大的帧只是向下倾斜以匹配原始大小。 / p>
如果在动画时图像增加,我如何允许ImageView的大小增加?
答案 0 :(得分:0)
您可以通过为View
指定所需宽度/高度的LayoutParams
来设置View
的任何宽度和高度。你可以用例如ValueAnimator
和ValueAnimator.AnimatorUpdateListener
获取类似脉冲生成器的内容,并重复修改和重置LayoutParams
。
但在我看来,这不是最好的方式,所以我不会给出这种方法的全部细节。为什么我认为这很糟糕?因为通过反复更改View
的边界,每次更改时,至少会让包含ViewGroup
的{{1}}整个View
通过新的layout pass边界。这在许多设备上可能没有问题,但所有设备所有者都将受益于不会不必要地耗尽电池的应用。
我的建议是使用ImageView
,其大小与您希望展示的最大框架相同。通过保持ImageView
的大小不变,我们使运行时能够“集中”"重新绘制ImageView
覆盖的区域,这将更好地表现。
通过设置属性android:scaleType="center"
,您将导致所有帧在ImageView
中显示为居中(而非缩放),因此我认为这会产生预期的效果。
如果另一方面,ImageView
不是唯一需要移动/更改的内容,那么我会查看Transition
framework.