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 に答える