Android规模动画:枢轴不能第一次工作

时间:2015-07-22 08:51:17

标签: android android-animation

好吧,我将图像视图置于RelativeLayout

<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/imgHomePlayPause"
    android:layout_centerVertical="true"
    android:layout_centerHorizontal="true"
    android:visibility="gone" />

我也有这个动画:

<set xmlns:android="http://schemas.android.com/apk/res/android">
<scale android:fromXScale="1.0"
    android:fromYScale="1.0"
    android:toXScale="2.0"
    android:toYScale="2.0"
    android:duration="400"
    android:pivotX="50%"
    android:pivotY="50%"/>
</set>

问题是当动画第一次开始时,它会从左上角缩放,而不是从中心缩放。所有下一次它都可以正常工作。有什么想法吗?

1 个答案:

答案 0 :(得分:8)

计算 pivotX pivotY 时可能会出现此问题。

我必须在开始时将查看 可见性设置为 INVISIBLE ,而不是 GONE 。 这迫使我使用 RelativeLayout ,因为我必须在两个 View 之间切换。

在您的情况下,只需将初始可见性更改为不可见,如下所示:

<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imgHomePlayPause"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:visibility="invisible" />

首次启动动画后,您可以将可见性设置为 GONE ,动画仍然有效。

结论:

我认为计算元素的宽度和高度只有在绘制一次后才能正常工作。 当元素可见性设置为 GONE 时,它将根本不会被绘制,并且不能计算宽度和高度。