補間動畫:在視圖容器內進行一系列圖像變化而產生的動畫效果愉择。
分類
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) |
動畫持續(xù)時間蔼水,毫秒為單位 |
android:fillAfter |
setFillAfter(boolean) |
是否保持動畫結束時的狀態(tài) |
aandroid:fillBefore |
setFillBefore(boolean) |
動畫結束時是否還原起始的狀態(tài) |
android:fillEnabled |
setFillEnabled(boolean) |
與android:fillBefore 效果相同 |
android:interpolator |
setInterpolator(Interpolator) |
插值器 |
android:repeatCount |
setRepeatCount(int) |
重復次數,-1為循環(huán) |
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) |
動畫監(jiān)聽 |
hasStarted() |
動畫是否開始 |
hasEnded() |
動畫是否結束 |
其他
View
類動畫操作方法:
JAVA | 描述 |
---|---|
startAnimation(Animation animation) |
設置并開始動畫 |
clearAnimation() |
清除動畫 |