Android 视图动画(一)
程序员文章站
2022-03-01 21:11:15
...
一、视图动画标签
概述
视图动画有5中类型组成:
alpha:渐变透明度
scale:渐变尺寸伸缩
translate:画面变换位置移动
rotate:画面转移旋转移动
set:定义动画集
scale标签
scale_anim.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" android:duration="3000"> //动画持续时间
<scale android:fromXScale="0.1" //初始X轴的缩放
android:fromYScale="0.1" //初始y轴的缩放
android:toXScale="1.4" //目标x轴的缩放
android:toYScale="1.4" //目标y轴的缩放
android:pivotX="150" //以控件的位置原点坐标,动画开始的起始位置x轴坐标
android:pivotY="150"/> //以控件的位置原点坐标,动画开始的起始位置y轴坐标
</set>
pivotX有三种数值:
150 直接数字,则是以控件为原点坐标的xy的坐标值(150,150),以目标控件为原点
150% 百分比的,是以控件为原点坐标的,为控件的宽度的150%的坐标,150%那就是控件宽度的150%
150%p 上面同理,但是以父控件的150%
java代码
startAnimBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//装载动画 R.anim.scale_anim 为动画位置
Animation scaleAnimation=AnimationUtils.loadAnimation(mContext,R.anim.scale_anim); //启动动画 scaleTV.startAnimation(scaleAnimation);
}
});
共同属性
所有动画都继承自Animation类,所以有一些共同的属性。
android:duration="3000" //动画持续时间,毫秒单位
android:fillAfter="true" //true动画结束,保持控件结束时的状态
android:fillBefore="true"//true动画结束,保持控件最初始状态
android:repeatCount="3" //动画重复次数,
infinite表示无限循环
android:repeatMode="restart" //重复的类型,
restart表示从头开始,reverse表示倒序回放
android:interpolator="@android:interpolator/accelerate_cubic" //插值器,控制速度等
看看回放和倒序回放
倒序回放:
android:repeatCount="3"
android:repeatMode="reverse"
回放:
android:repeatCount="3"
android:repeatMode="restart"
alpha标签
<alpha android:duration="3000" //持续时间 android:fromAlpha="0.1" //初始透明度 android:toAlpha="1"/> //最大透明度 数值在0.0~1.0之间
rotate标签
<alpha android:fromAlpha="0.01" //初始角度 android:toAlpha="1"/> //旋转角度 取值范围可以为负值,为逆时针,正值为顺时针
translate标签
<translate android:fromXDelta="50" //以控件为原坐标,x轴加50 为起始X轴
android:fromYDelta="50" //以控件为原坐标,y轴加50 为起始y轴
android:toXDelta="400" //目标x轴
android:toYDelta="400" /> //目标y轴
set标签
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="8000"
android:fillAfter="false"
android:fillBefore="true">
<scale
android:fromXScale="0.1"
android:fromYScale="0.1"
android:pivotX="150"
android:pivotY="150"
android:toXScale="1.4"
android:toYScale="1.4" />
<alpha
android:fromAlpha="0.5"
android:toAlpha="1"/>
<rotate android:fromDegrees="0.0"
android:toDegrees="360"/>
<translate
android:fromXDelta="50"
android:fromYDelta="50"
android:toXDelta="300"
android:toYDelta="300" />
</set>