Android Вид. Размер анимации увеличился при использовании с другим набором анимации. Зачем? - PullRequest
0 голосов
/ 29 мая 2020

Я следую за примером view.animation здесь https://developer.android.com/guide/topics/graphics/view-animation и сталкиваюсь с какой-то странной проблемой.

Чтобы проиллюстрировать проблему, я увеличиваю продолжительность с 700 мс до 2000 мс с тем же кодом, что и ниже .

<set android:shareInterpolator="false"
    xmlns:android="http://schemas.android.com/apk/res/android">
    <scale
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"
        android:fromXScale="1.0"
        android:toXScale="1.4"
        android:fromYScale="1.0"
        android:toYScale="1.4"
        android:pivotX="50%"
        android:pivotY="50%"
        android:fillAfter="false"
        android:duration="2000" />
    <set android:interpolator="@android:anim/decelerate_interpolator">
        <scale
            android:fromXScale="1.4"
            android:toXScale="0.0"
            android:fromYScale="1.4"
            android:toYScale="0.0"
            android:pivotX="50%"
            android:pivotY="50%"
            android:startOffset="2000"
            android:duration="400"
            android:fillBefore="false" />
        <rotate
            android:fromDegrees="0"
            android:toDegrees="-45"
            android:toYScale="0.0"
            android:pivotX="50%"
            android:pivotY="50%"
            android:startOffset="2000"
            android:duration="400" />
    </set>
</set>

Вы заметили начальную анимацию, размер Hello World! увеличился в начале, как показано на гифке ниже. Это странно, потому что fromXScale и fromYScale начинаются с 1.0, поэтому я ожидаю постепенного изменения размера, а не скачка.

Unexpcted jumped in size at the start

Если я удалю второй набор анимации и оставлю код, как показано ниже

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

, тогда анимация будет выглядеть гладкой, увеличьте ее размер с 1,0 до 1,4 соответственно, как показано ниже.

Expected behavior

Почему скачок в размере?

1 Ответ

0 голосов
/ 29 мая 2020

По-видимому, код, который нам нужен, чтобы установить второй набор fromXScale и fromYScale в 1.0 первым.

<set android:shareInterpolator="false"
    xmlns:android="http://schemas.android.com/apk/res/android">
    <scale
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"
        android:fromXScale="1.0"
        android:toXScale="1.4"
        android:fromYScale="1.0"
        android:toYScale="1.4"
        android:pivotX="50%"
        android:pivotY="50%"
        android:fillAfter="false"
        android:duration="2000" />
    <set android:interpolator="@android:anim/decelerate_interpolator">
        <scale
            android:fromXScale="1.0"
            android:toXScale="0.0"
            android:fromYScale="1.0"
            android:toYScale="0.0"
            android:pivotX="50%"
            android:pivotY="50%"
            android:startOffset="2000"
            android:duration="400"
            android:fillBefore="false" />
        <rotate
            android:fromDegrees="0"
            android:toDegrees="-45"
            android:toYScale="0.0"
            android:pivotX="50%"
            android:pivotY="50%"
            android:startOffset="2000"
            android:duration="400" />
    </set>
</set>

Тогда анимация будет плавной, как показано ниже.

enter image description here

Код в https://developer.android.com/guide/topics/graphics/view-animation немного сбивает с толку, как это ведет себя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...