我很好奇这个行为......我目前正在设置动画XML中的两个值:
android:fillEnabled="true"
android:fillAfter="true"
但是,动画完成后转换不适用...它总是重置。当我通过代码以编程方式设置它时,它似乎工作:
animation.setFillEnabled(true);
animation.setFillAfter(true);
所以我只是好奇这应该如何工作,因为我宁愿在XML上设置它。谢谢!
答案 0 :(得分:65)
我有同样的问题,这对我有用:
<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标记。
答案 1 :(得分: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" />
答案 2 :(得分:8)
通常,在根元素上使用 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>
答案 3 :(得分:0)
在set标签中放置fillEnabled和fillAfter属性有助于解决问题。