Android动画学习(二)之补间动画实现
补间动画概述
概述:
补间动画就是程序员只需要指定动画开始、结束等属性,而动画的变换过程由系统计算并补齐的动画
Tween 动画,可以使视图组件移动、放大、缩小以及产生透明度的变化。
特点:
补间动画是只能够作用在View上
对View进行移动、缩放、旋转和淡入淡出
通过配置Interpolator来控制动画的播放速度
借助AnimationSet来将这些动画效果组合起来使用
分类:
Java类名 | XML关键字 | 实现效果 |
---|---|---|
ScaleAnimation | scale | 渐变尺寸伸缩动画效果 |
TranslateAnimation | translate | 画面转换位置移动动画效果 |
AlphaAnimation | alpha | 渐变透明度动画效果 |
RotateAnimation | rotate | 画面转移旋转动画效果 |
补间动画的实现
Animation的公用功能
常用API:
start():开启动画
setAnimationListener(AnimationListener listener):设置动画监听
- setDuration(long durationMillis) : 设置持续时间(单位ms)
- setStartOffset(long startOffset) : 设置开始的延迟的时间(单位ms)
- setFillBefore(boolean fillBefore) : 设置最终是否固定在起始状态
- setFillAfter(boolean fillAfter) : 设置最终是否固定在最后的状态
- setAnimationListener(AnimationListener listener) : 设置动画监听
- setRepeatCount(int repeatCount):设置动画重复次数
- setInterpolator(Interpolator i):设置使用插值器
- cancel():取消动画
reset():重置动画为初始化状态
startAnimation(animation):启动动画(控件)
clearAnimation():结束动画(控件)
坐标类型:Animation.ABSOLUTE 绝对值数值(默认以px为单位) 100
- Animation.RELATIVE_TO_SELF 相对于自己 百分数,如:50% (以当前视图的宽度或高度其为基数来计算)
- Animation.RELATIVE_TO_PARENT 相对于父控件 百分数+p,如:50%p (以父视图的宽度或高度其为基数来计算)
动画监听器 : AnimationListener
onAnimationStart(Animation animation) : 动画开始的回调
onAnimationEnd(Animation animation) : 动画结束的回调
onAnimationRepeat(Animation animation) : 动画重复执行
缩放动画(ScaleAnimation)
可以对View大小进行的动画。创建该动画需要指定的参数包括缩放中心坐标(pivotXValue,pivotYValue)、动画开始时缩放比(fromX,fromY)、动画结束时缩放比(toX,toY)和坐标类型值(pivotXType,pivotYType(可参考坐标类型)),以及其它的动画属性。
代码实现
1、源码解析
ScaleAnimation(float fromX, float toX, float fromY, float toY, int pivotXType, float pivotXValue, int pivotYType, float pivotYValue)
第一个参数fromX为动画起始时 X坐标上的伸缩尺寸
第二个参数toX为动画结束时 X坐标上的伸缩尺寸
第三个参数fromY为动画起始时Y坐标上的伸缩尺寸
第四个参数toY为动画结束时Y坐标上的伸缩尺寸
说明:
以上四种属性值
0.0表示收缩到没有
1.0表示正常无伸缩
值小于1.0表示收缩
值大于1.0表示放大
第五个参数pivotXType为动画在X轴相对于物件位置类型
第六个参数pivotXValue为动画相对于物件的X坐标的开始位置
第七个参数pivotXType为动画在Y轴相对于物件位置类型
第八个参数pivotYValue为动画相对于物件的Y坐标的开始位置
2、代码
public void scale(View view) {
ation_Scale = new ScaleAnimation(0.0f, 1.4f, 0.0f, 1.4f,
Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
animation_Scale.setDuration(2000);
iv.startAnimation(animation_Scale);
}
XML实现
1、配置xml动画属性
在res下新建anim文件夹,新建AAA.xml文件。在set属性下新建设置动画属性.
<scale
android:duration="1000"
android:fillAfter="false"
android:fromXScale="0.0"
android:fromYScale="0.0"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:pivotX="50%"
android:pivotY="50%"
android:toXScale="1.4"
android:toYScale="1.4" />
2、代码引用xml文件
/**
* 渐变尺寸伸缩动画效果
*
* @param view
*/