在某些场景时,需要添加动画效果,动画执行完成后,图片保持在最后一帧上。
分两种情况
1、单一动画效果
使用xml文件时 在 alpha、scale 、translate 、rotate 节点上添加
android:fillAfter="true"
android:fillEnabled="true"
或者在代码中设置
setFillAfter(true);
setFillEnabled(true);
2、动画合集
需要在xml文件的set标签内添加
android:fillAfter="true"
android:fillEnabled="true"
或者在代码中设置
animationSet.setFillAfter(true);
animationSet.setFillEnabled(true);
动画监听
set.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
//动画开始
}
@Override
public void onAnimationEnd(Animation animation) {
//动画结束
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
关于更多关于动画属性,阅读https://blog.csdn.net/harvic880925/article/details/39996643
代码设置属性动画
/**
* 初始化动画
*/
private void initAnima() {
// 动画集合
AnimationSet set = new AnimationSet(false);// 参数是否需要插补器
// 旋转动画
RotateAnimation rotate = new RotateAnimation(0, 360,
Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF,
0.5f);
rotate.setDuration(1000);// 旋转时长
rotate.setFillAfter(true);// 旋转后保持原状
set.addAnimation(rotate);
// 缩放动画
ScaleAnimation scale = new ScaleAnimation(0, 1, 0, 1,
Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF,
0.5f);
scale.setDuration(1000);// 旋转时长
scale.setFillAfter(true);// 旋转后保持原状
set.addAnimation(scale);
// 淡入淡出(渐变)动画
AlphaAnimation alpha = new AlphaAnimation(0, 1);
alpha.setDuration(1000);// 旋转时长
alpha.setFillAfter(true);// 旋转后保持原状
set.addAnimation(alpha);
// 动画监听
set.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
// 动画开始
}
@Override
public void onAnimationRepeat(Animation animation) {
// 动画重复
}
@Override
public void onAnimationEnd(Animation animation) {
// 动画结束
}
});
rlRoot.startAnimation(set);
}
xml文件动画
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:fillAfter="true"
android:fillEnabled="true">
<rotate
android:fromDegrees="0"
android:toDegrees="360"
android:pivotX="50%"
android:pivotY="50%"
android:duration="5000"
android:repeatCount="0">
</rotate>
<scale
android:fromXScale="1.0"
android:toXScale="0.5"
android:fromYScale="1.0"
android:toYScale="0.5"
android:pivotX="50%"
android:duration="5000"
android:pivotY="50%"
>
</scale>
</set>
```