Анимация Android Scale не плавная - PullRequest
0 голосов
/ 01 октября 2018

Я не знаю, как создать <scale> анимацию в ImageView, которая работает нормально, я создал одну с Vector Drawable, которая работает, но изображение одно не совсем гладкое, gif внизу:

<vector xmlns:android="http://schemas.android.com/apk/res/android"

android:width="24px"
android:height="24px"
android:viewportWidth="24.0"
android:viewportHeight="24.0"
>

<group android:name="background"
    android:pivotX="12"
    android:pivotY="12">
    <path
        android:name="circle"
        android:fillColor="#F235"
        android:pathData="M12,12m-10,0a10,10 0,1 1,20 0a10,10 0,1 1,-20 0" />
</group>
</vector>

Анимация:

<set xmlns:android="http://schemas.android.com/apk/res/android">

    <objectAnimator
        android:duration="400"
        android:propertyName="scaleX"
        android:valueFrom="1.0"
        android:valueTo="0.8"
        android:valueType="floatType"
        />

    <objectAnimator
        android:duration="400"
        android:propertyName="scaleY"
        android:valueFrom="1.0"
        android:valueTo="0.8"
        android:valueType="floatType"
        />

    <objectAnimator
        android:duration="400"
        android:startOffset="500"
        android:propertyName="scaleX"
        android:valueFrom="0.8"
        android:valueTo="1"
        android:valueType="floatType"
        />
    <objectAnimator
        android:duration="400"
        android:startOffset="500"
        android:propertyName="scaleY"
        android:valueFrom="0.8"
        android:valueTo="1"
        android:valueType="floatType"
        />

</set>

Это анимация моего масштаба изображения:

<set xmlns:android="http://schemas.android.com/apk/res/android">

    <scale
        android:duration="400"
        android:pivotX="50%"
        android:pivotY="50%"
        android:fromXScale="1.0"
        android:toXScale="0.8"
        android:fromYScale="1.0"
        android:toYScale="0.8"
        />

    <scale
        android:startOffset="500"
        android:duration="400"
        android:pivotX="50%"
        android:pivotY="50%"
        android:fromXScale="0.8"
        android:fromYScale="0.8"
        android:toYScale="1.0"
        android:toXScale="1.0" />


</set>

Синяя - это векторное изображение, красная - это изображение, анимированное с помощью <scale>

* 1013.* Я знаю, что это можно решить, удалив второй <scale> и добавив
android:repeatMode="reverse"
android:repeatCount="1"

к первому, но я бы хотел, чтобы он работал с двумя <scale> командами

enter image description here

1 Ответ

0 голосов
/ 01 октября 2018

Ваша вторая анимация должна начинаться со шкалы 1.0 и заканчиваться 1.25:

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

    <scale
        android:startOffset="500"
        android:duration="400"
        android:pivotX="50%"
        android:pivotY="50%"
        android:fromXScale="1.0"
        android:fromYScale="1.0"
        android:toYScale="1.25"
        android:toXScale="1.25" />
</set>

В противном случае шкала 0.8 применяется мгновенно, без задержки в 500 мс. Похожие вопросы

...