补间动画:在视图容器内进行一系列图像变化而产生的动画效果。
分类
XML | JAVA | 名称 |
---|---|---|
<alpha> |
AlphaAnimation |
透明度动画 |
<rotate> |
RotateAnimation |
旋转动画 |
<scale> |
ScaleAnimation |
缩放动画 |
<translate> |
TranslateAnimation |
位移动画 |
<set> |
AnimationSet |
持有动画元素alpha、scale、translate、rotate、set 的容器 |
XML
定义动画,文件存放在res/anim/
目录下。
AlphaAnimation 透明度动画
JAVA
/**
* fromAlpha 开始透明度
* toAlpha 结束透明度
*
* 0.0 全透明 ~ 1.0 不透明
*/
AlphaAnimation(float fromAlpha, float toAlpha)
//例
Animation alphaAnimation = new AlphaAnimation(0.1f, 1.0f);
XML
//alpha.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<alpha
android:duration="1000"
android:fromAlpha="0.0"
android:toAlpha="1.0" />
</set>
// 用AnimationUtils装载动画配置文件
Animation animation = AnimationUtils.loadAnimation(this, R.anim.alpha);
RotateAnimation 旋转动画
JAVA
//(1)
/**
* fromDegrees 起始角度
* toDegrees 结束角度 ('+'顺时针、'-'逆时针)
* pivotXType 动画在X轴相对于物件位置类型
* pivotXValue 动画相对于物件的X坐标的开始位置
* pivotYType 动画在Y轴相对于物件位置类型
* pivotYValue 动画相对于物件的Y坐标的开始位置
*/
RotateAnimation(float fromDegrees, float toDegrees,
int pivotXType, float pivotXValue, int pivotYType, float pivotYValue) ;
//例
Animation rotateAnimation = new RotateAnimation(0.0f, +350.0f,
Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
//(2)
/**
* fromDegrees 起始角度
* toDegrees 结束角度 ('+'顺时针、'-'逆时针)
* pivotX 动画在X轴相对于物件位置
* pivotY 动画在Y轴相对于物件位置
*/
RotateAnimation(float fromDegrees, float toDegrees, float pivotX, float pivotY) ;
pivotX
:动画相对于物件的X坐标的开始位置(数值、百分数、百分数p)
- 50:以当前View左上角坐标加50px为初始点;
- 50%:以当前View的左上角加上当前View宽高的50%做为初始点;
- 50%p:表示以当前View的左上角加上父控件宽高的50%做为初始点)。
pivotY
雷同。
XML
//rotate.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<rotate
android:fromDegrees="0"
android:toDegrees="+360"
android:pivotX="50%"
android:pivotY="50%"
android:duration="1000"/>
</set>
// 用AnimationUtils装载动画配置文件
Animation animation = AnimationUtils.loadAnimation(this, R.anim.rotate);
ScaleAnimation 缩放动画
JAVA
//(1)
/**
* fromX 起始X坐标伸缩尺寸
* toX 结束X坐标伸缩尺寸
* fromY 起始Y坐标伸缩尺寸
* toY 结束Y坐标伸缩尺寸
*
* 以上四种属性值
* 0.0:收缩到没有 | 1.0:正常无伸缩 | 值小于1.0:收缩 | 值大于1.0:放大
*
* pivotXType 在X轴相对于物件位置类型
* pivotXValue 相对于物件的X坐标的开始位置
* pivotXType 在Y轴相对于物件位置类型
* pivotYValue 相对于物件的Y坐标的开始位置
*/
ScaleAnimation(float fromX, float toX, float fromY, float toY,
int pivotXType, float pivotXValue, int pivotYType, float pivotYValue);
//例
Animation animation = new ScaleAnimation(0.0f, 1.4f, 0.0f, 1.4f,
Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
// 0.5f:相对于物件自身 X/Y 坐标上的中点位置
//(2)
/**
* pivotX 相对于物件的X坐标的开始位置
* pivotY 相对于物件的Y坐标的开始位置
* 值可为数值、百分数、百分数p
*/
ScaleAnimation(float fromX, float toX, float fromY, float toY, float pivotX, float pivotY);
// 50%:物件的 X/Y 方向坐标上的中点位置
XML
//sacle.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<scale
android:fromXScale="1.0"
android:toXScale="0.0"
android:fromYScale="1.0"
android:toYScale="0.0"
android:pivotX="50%"
android:pivotY="50%"
android:duration="1000"/>
</set>
// 用AnimationUtils装载动画配置文件
Animation animation = AnimationUtils.loadAnimation(this, R.anim.scale);
TranslateAnimation 位移动画
JAVA
//(1)
/**
* fromXType 起始X坐标移动位置类型
* fromXValue 起始X坐标移动位置
* toXType 结束X坐标移动位置类型
* toXValue 结束X坐标移动位置
*/
TranslateAnimation(int fromXType, float fromXValue, int toXType, float toXValue,
int fromYType, float fromYValue, int toYType, float toYValue)
//例
TranslateAnimation translateAnimation = new TranslateAnimation(
Animation.RELATIVE_TO_SELF, 0f,
Animation.RELATIVE_TO_SELF, 0.5f,
Animation.RELATIVE_TO_SELF, 0f,
Animation.*RELATIVE_TO_SELF, 0.5f);
//(2)
/**
* fromXDelta 起始时X坐标移动位置
* toXDelta 结束时X坐标移动位置
* fromYDelta 起始时Y坐标移动位置
* toYDelta 结束时Y坐标移动位置
*/
TranslateAnimation(float fromXDelta, float toXDelta, float fromYDelta, float toYDelta)
//例
Animation translateAnimation = new TranslateAnimation(0.1f, 100.0f, 0.1f, 100.0f);
XML
//translate.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<alpha
android:duration="1000"
android:fromAlpha="0.0"
android:toAlpha="1.0" />
</set>
// 用AnimationUtils装载动画配置文件
Animation animation = AnimationUtils.loadAnimation(this, R.anim.translate);
AnimationSet
AnimationSet
继承自Animation
,是上面四种动画的组合容器管理类。对set
标签使用Animation
属性时会对该标签下的所有子控件产生影响。
JAVA
AnimationSet animationSet = new AnimationSet(true);
AlphaAnimation alphaAnimation = new AlphaAnimation(1, 0);
RotateAnimation rotateAnimation = new RotateAnimation(0, 360,
Animation.RELATIVE_TO_SELF, 0.5f,
Animation.RELATIVE_TO_SELF, 0.5f);
rotateAnimation.setDuration(1000);
animationSet.addAnimation(rotateAnimation);
animationSet.addAnimation(alphaAnimation);
image.startAnimation(animationSet);
XML
//animset.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<alpha
android:fromAlpha="1.0"
android:toAlpha="0.0"
android:startOffset="500"
android:duration="500"/>
<translate
android:fromXDelta="0%"
android:toXDelta="100%"
android:fromYDelta="0%"
android:toYDelta="100%"
android:duration="2000"/>
</set>
// 用AnimationUtils装载动画配置文件
Animation animation = AnimationUtils.loadAnimation(this, R.anim.animset);
属性
XML | JAVA | 描述 |
---|---|---|
android:detachWallpaper |
setDetachWallpaper(boolean) |
是否在壁纸上运行 |
android:duration |
setDuration(long) |
动画持续时间,毫秒为单位 |
android:fillAfter |
setFillAfter(boolean) |
是否保持动画结束时的状态 |
aandroid:fillBefore |
setFillBefore(boolean) |
动画结束时是否还原起始的状态 |
android:fillEnabled |
setFillEnabled(boolean) |
与android:fillBefore 效果相同 |
android:interpolator |
setInterpolator(Interpolator) |
插值器 |
android:repeatCount |
setRepeatCount(int) |
重复次数,-1为循环 |
aandroid:repeatMode |
setRepeatMode(int) |
重复类型,reverse :倒序回放;restart :从头播放 |
android:startOffset |
setStartOffset(long) |
动画开始时的等待时间,单位为毫秒 |
android:zAdjustment |
setZAdjustment(int) |
被设置动画的内容运行时在Z 轴上的位置top/bottom/normal ,默认为normal
|
android:detachWallpaper |
setDetachWallpaper(boolean) |
是否在壁纸上运行 |
方法
JAVA | 描述 |
---|---|
reset() |
重启动画 |
cancel() |
取消动画 |
start() |
开始动画 |
setAnimationListener(AnimationListener listener) |
动画监听 |
hasStarted() |
动画是否开始 |
hasEnded() |
动画是否结束 |
其他
View
类动画操作方法:
JAVA | 描述 |
---|---|
startAnimation(Animation animation) |
设置并开始动画 |
clearAnimation() |
清除动画 |
网友评论