很多文章都对fillafter和fillbefore这两个属性进行过描述,大致都是说:
/******动画结束时,停留在最后一帧**********
<set android:fillAfter="true" android:fillBefore="false">
/******动画结束时,停留在第一帧**********
<set android:fillAfter="false" android:fillBefore="true">
且注:xml设置在scale标签里面设置是无效的,注意是set标签
-----------------------------------------------------------------------------------------------------华丽丽的分割线--------------------------------------------------------------------------------------------------------
但这里面很多人尝试使用并不好用,原因就是注没看明白。
正确解释是fillafter和fillbefore这两个属性是不能够在</alpha>,</scale>,</translate>,</rotate>中设置的,
这样设置是无效的,要能正确显示效果需要这样设置:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:Android="http://schemas.android.com/apk/res/android"
android:fillEnabled="true"
android:fillAfter="true">
<translate
android:interpolator="@android:anim/cycle_interpolator"
android:fromXDelta="0"
android:toXDelta="100"
android:fromYDelta="0"
android:toYDelta="100"
android:duration="2000"
>
</translate>
</set>
这里面可能犯的错误是属性放置的位置有错误,再就是没有添加下面语句,这些都是导致效果不能实现的原因
android:fillEnabled="true"
要是Java则:
setFillAfter(true);
setFillBefore(false);
以上就是我经过学习和调试得到的心得和理解,希望能够帮助到你。