Android缩放动画:pivot第一次不起作用

Vad*_*nko 3 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" />
Run Code Online (Sandbox Code Playgroud)

我也有这个动画:

<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>
Run Code Online (Sandbox Code Playgroud)

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

Yor*_*les 9

计算pivotXpivotY时可能会导致此问题.

我必须在开始时将View 可见性设置为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" />
Run Code Online (Sandbox Code Playgroud)

在第一次开始动画后,您可以将可见性设置为GONE,动画仍然可以使用.

结论:

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