fillAfter и fillEnabled не работают в Android-анимации просмотра XML - PullRequest
21 голосов
/ 28 июня 2011

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

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

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

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

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

Ответы [ 4 ]

65 голосов
/ 29 июня 2011

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

<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

12 голосов
/ 02 января 2012

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

    <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" />
8 голосов
/ 04 августа 2015

В общем случае используйте 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" />

OR

<?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>
0 голосов
/ 24 декабря 2014

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

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