5

我正在ImageView使用以下比例动画制作动画:

<?xml version="1.0" encoding="utf-8"?>

<set    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shareInterpolator="false">
    <scale
        android:interpolator="@android:anim/accelerate_interpolator"
        android:fromXScale="1.0"
        android:toXScale="2.0"
        android:fromYScale="1.0"
        android:toYScale="2.0"
        android:pivotX="50%"
        android:pivotY="50%"
        android:duration="1000" />

    <scale
        android:interpolator="@android:anim/accelerate_interpolator"
        android:fromXScale="2.0"
        android:toXScale="0.0"
        android:fromYScale="2.0"
        android:toYScale="0.0"
        android:pivotX="50%"
        android:pivotY="50%"
        android:startOffset="1000"
        android:duration="1000" />

    <rotate xmlns:android="http://schemas.android.com/apk/res/android"
        android:fromDegrees="0"
        android:interpolator="@android:anim/linear_interpolator"
        android:toDegrees="360" android:pivotX="50%" android:pivotY="50%"
        android:repeatCount="3"
        android:duration="800" android:startOffset="0" />
</set>

但问题是ImageView,当第一个动画开始时,布局已经按比例缩放了。当第一个动画将比例设置为 1.0 时,这会导致尺寸明显跳跃。

有没有办法告诉动画它应该从布局中视图的实际大小开始?我还尝试使用百分比,产生了相同的效果。

4

2 回答 2

2

根据我从您的查询中了解到的是,您希望通过避免在开始时明显明显的缩放动画来使动画更流畅。我认为最小化第一个比例中的“从比例”可以帮助你避免跳跃,也许这样的事情会有所帮助:

<?xml version="1.0" encoding="utf-8"?>

<scale
    android:duration="1000"
    android:fromXScale="0.5"
    android:fromYScale="0.5"
    android:interpolator="@android:anim/accelerate_interpolator"
    android:pivotX="50%"
    android:pivotY="50%"
    android:toXScale="1.0"
    android:toYScale="1.0" />
<scale
    android:duration="1000"
    android:fromXScale="1.0"
    android:fromYScale="1.0"
    android:interpolator="@android:anim/accelerate_interpolator"
    android:pivotX="50%"
    android:pivotY="50%"
    android:startOffset="1000"
    android:toXScale="1.0"
    android:toYScale="1.0" />

<rotate
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="800"
    android:fromDegrees="0"
    android:interpolator="@android:anim/linear_interpolator"
    android:pivotX="50%"
    android:pivotY="50%"
    android:repeatCount="3"
    android:startOffset="0"
    android:toDegrees="360" />

抱歉让你久等了; 尝试这样的事情:

<?xml version="1.0" encoding="utf-8"?>

<scale
    android:duration="400"
    android:fromXScale="1"
    android:fromYScale="1"
    android:pivotX="20%"
    android:pivotY="20%"
    android:repeatCount="1"
    android:repeatMode="reverse"
    android:toXScale="1.1"
    android:toYScale="1.1" />

于 2013-09-08T07:41:30.613 回答
0

我没有找到使用 xml 的方法,所以我最终使用这种方法来确定运行时的大小并在 Java 中设置动画:

在运行时确定 Android 视图的大小

于 2013-09-18T21:48:57.347 回答