【发布时间】:2018-01-14 02:31:16
【问题描述】:
我计划使用 AnimationDrawable 为爆炸设置动画,并且我保存了尺寸不断增加的帧:
问题是我最初将 ImageView 的大小指定为 wrap_content,所以当我播放动画时,ImageView 的大小保持不变,较大的帧只是向下倾斜以匹配原始大小。
如何让 ImageView 在动画时随着图像的增大而增大?
【问题讨论】:
标签: android animation imageview
我计划使用 AnimationDrawable 为爆炸设置动画,并且我保存了尺寸不断增加的帧:
问题是我最初将 ImageView 的大小指定为 wrap_content,所以当我播放动画时,ImageView 的大小保持不变,较大的帧只是向下倾斜以匹配原始大小。
如何让 ImageView 在动画时随着图像的增大而增大?
【问题讨论】:
标签: android animation imageview
您可以通过将具有所需宽度/高度的LayoutParams 分配给View 来设置任何View 的宽度和高度。您可以使用例如ValueAnimator 和 ValueAnimator.AnimatorUpdateListener 得到类似脉冲发生器的东西,并反复修改和重新设置 LayoutParams。
但在我看来,这不是最好的方法,所以我不会提供这种方法的全部细节。为什么我觉得不好?因为通过反复更改View 的边界,每次更改边界时,您至少会导致包含View 的整个ViewGroup 经历一个新的layout pass。这在许多设备上可能没有问题,但所有设备所有者都将从不会不必要地耗尽电池电量的应用程序中受益。
我的建议是使用ImageView,其大小与您希望显示的最大框架相同。通过保持ImageView 的大小不变,我们使运行时能够“集中”重新绘制ImageView 所覆盖的区域,这将大大提高性能。
通过设置android:scaleType="center" 属性,您将使所有帧在ImageView 中显示为居中(而不是缩放),所以我认为这将产生预期的效果。
另一方面,如果您的 ImageView 不是唯一需要移动/更改的东西,那么我会查看 Transition framework.
【讨论】: