FillAfter и fillEnabled не работает в Android-анимации просмотра XML

Мне интересно, как это поступить... В настоящее время я устанавливаю два значения в XML-XML:

    android:fillEnabled="true"
    android:fillAfter="true"

Однако преобразование не применяется после того, как анимация выполнена... она всегда сбрасывается. Когда я устанавливаю его программно с помощью кода, он работает:

    animation.setFillEnabled(true);
    animation.setFillAfter(true);

Поэтому мне просто интересно, как это должно работать, поскольку я предпочел бы установить его в XML. Спасибо!

Ответ 1

Он также работает, если у вас нет установленного тега и вы просто выполняете перевод или что-то вроде этого.

    <translate xmlns:android="http://schemas.android.com/apk/res/android"       
    android:interpolator="@android:anim/linear_interpolator"       
    android:fromXDelta="0"
    android:toXDelta="0"
    android:fromYDelta="1000"
    android:toYDelta="-300" 
    android:startOffset="100"
    android:duration="1000"
    android:fillAfter="true" />

Ответ 2

У меня была та же проблема, это сработало для меня:

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

    <translate
        android:fromYDelta="0"
        android:toYDelta="-20%p"
        android:duration="7000" />

</set>

Поместите атрибуты fillEnabled и fillAfter в тег Set.

Ответ 3

В общем случае используйте fillAfter и fillEnabled в корневом элементе

поэтому либо

<?xml version="1.0" encoding="utf-8"?>
<translate
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:fillAfter="true"
    android:fillEnabled="true"
    android:fromXDelta="0%"
    android:toXDelta="-100%"
    android:duration="500" />

ИЛИ

<?xml version="1.0" encoding="utf-8"?>
<set
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:fillAfter="true"
    android:fillEnabled="true">
    <translate
        android:fromXDelta="0%"
        android:toXDelta="-100%"
        android:duration="500" />
</set>

Ответ 4

размещение атрибутов fillEnabled и fillAfter в установленном теге помогло решить проблему.