fillAfter和fillEnabled在Android视图动画XML中不起作用

Joe*_*nez 21 animation android

我对这种行为感到好奇......我目前正在设置动画XML中的两个值:

    android:fillEnabled="true"
    android:fillAfter="true"
Run Code Online (Sandbox Code Playgroud)

但是,动画完成后转换不适用...它总是重置.当我通过代码以编程方式设置它似乎工作:

    animation.setFillEnabled(true);
    animation.setFillAfter(true);
Run Code Online (Sandbox Code Playgroud)

所以我只是好奇它应该如何工作,因为我宁愿在XML上设置它.谢谢!

Jos*_*ole 67

我有同样的问题,这对我有用:

<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>
Run Code Online (Sandbox Code Playgroud)

将属性fillEnabledfillAfter放在Set标记中.


小智 12

如果你没有set标签并且正在进行翻译或类似的事情,它也可以工作.

    <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" />
Run Code Online (Sandbox Code Playgroud)


Sol*_*uiD 8

通常,在根元素上使用fillAfterfillEnabled

所以要么

<?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" />
Run Code Online (Sandbox Code Playgroud)

要么

<?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>
Run Code Online (Sandbox Code Playgroud)