如何允许ImageView的大小随AnimationDrawable而变化?

时间:2018-01-13 17:39:59

标签: android animation imageview

我计划使用AnimationDrawable为爆炸设置动画,并且我保存了大小不一的帧:

enter image description here

问题在于我最初将ImageView大小指定为wrap_content,因此当我播放动画时,ImageView的大小保持不变,较大的帧只是向下倾斜以匹配原始大小。 / p>

如果在动画时图像增加,我如何允许ImageView的大小增加?

1 个答案:

答案 0 :(得分:0)

您可以通过为View指定所需宽度/高度的LayoutParams来设置View的任何宽度和高度。你可以用例如ValueAnimatorValueAnimator.AnimatorUpdateListener获取类似脉冲生成器的内容,并重复修改和重置LayoutParams

但在我看来,这不是最好的方式,所以我不会给出这种方法的全部细节。为什么我认为这很糟糕?因为通过反复更改View的边界,每次更改时,至少会让包含ViewGroup的{​​{1}}整个View通过新的layout pass边界。这在许多设备上可能没有问题,但所有设备所有者都将受益于不会不必要地耗尽电池的应用。

我的建议是使用ImageView,其大小与您希望展示的最大框架相同。通过保持ImageView的大小不变,我们使运行时能够“集中”"重新绘制ImageView覆盖的区域,这将更好地表现。

通过设置属性android:scaleType="center",您将导致所有帧在ImageView中显示为居中(而非缩放),因此我认为这会产生预期的效果。

如果另一方面,ImageView不是唯一需要移动/更改的内容,那么我会查看Transition framework.