看夠了文字博客?不如來嘗試看一下視頻博客吧
配套視頻地址:https://mp.weixin.qq.com/s/KpcwT-RH8kMIhWcuEcYDZw
簡介
View動畫的作用對象是view,支持的動畫效果一般包括平移、縮放、旋轉、透明度等四種。它屬於漸進式動畫,並且支持自定義。但是它執行的動畫只是視覺上的改變,真正的屬性及位置還在原先的地方。
創建view動畫可以通過TranslateAnimation、ScaleAnimation、RotateAnimation、AlphaAnimation等四種Animation的子類創建,也可以在xml中通過<translate>、<scale>、<rotate>、<alpha>等標籤來定義來定義,一般建議使用xml來定義。
對應關係:
名稱 |
類 |
標籤 |
平移動畫 |
TranslateAnimation |
<translate> |
縮放動畫 |
ScaleAnimation |
<scale> |
縮放動畫 |
RotateAnimation |
<rotate> |
透明度動畫 |
AlphaAnimation |
<alpha> |
集合動畫 |
AnimationSet |
<set> |
動畫的創建
常用共用屬性
屬性 |
作用 |
取值 |
duration |
動畫的持續時間 |
float |
fillAfter |
動畫結束後是否保留結束狀態 |
boolean |
interpolator |
插值器 |
資源 |
shareInterpolator |
集合中的動畫是否共享同一個插值器 |
boolean |
startOffset |
動畫延遲播放時間 |
float |
repeatCount |
動畫重複次數,數字爲負數時爲無限循環 |
float |
repeatMode |
重複的類型,reverse倒放,restart從新播放 |
reverse/restart |
平移動畫
作用:使View在水平和豎直方向完成平移
標籤:<translate>
類:Traslate
屬性 |
含義 |
值類型 |
fromXDelta |
X軸的起始值 |
float |
toXDelta |
X軸的結束值 |
float |
fromYDelta |
Y軸的起始值 |
float |
toYDelta |
Y軸的結束值 |
float |
例子:
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXDelta="0"
android:toXDelta="100%"
android:fromYDelta="0"
android:toYDelta="100%"
android:zAdjustment="bottom"
android:duration="2000"
android:repeatCount="-1"
android:repeatMode="reverse"
android:fillAfter="true">
</translate>
縮放動畫
作用:使View具有放大或者縮小的動畫效果
標籤:<scale>
類:ScaleAnimation
屬性 |
含義 |
值類型 |
fromXScale |
水平方向縮放的起始值 |
float |
toXScale |
水平方向縮放的結束值 |
float |
fromYScale |
豎直方向縮放的起始值 |
float |
toYScale |
數值方向縮放的結束值 |
float |
pivotX |
縮放的x軸軸點的座標 |
float |
PivotY |
縮放的y軸軸點的座標 |
float |
例子:
<?xml version="1.0" encoding="utf-8"?>
<scale xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXScale="100%"
android:toXScale="200%"
android:fromYScale="100%"
android:toYScale="200%"
android:duration="2000"
android:pivotX="0%"
android:pivotY="0%"
android:fillAfter="true">
</scale>
旋轉動畫
作用:使view具有旋轉的動畫效果
標籤:<rotate>
類:RotateAnimation
屬性 |
含義 |
值類型 |
fromDegrees |
旋轉開始的角度 |
float |
toDegrees |
旋轉結束的角度 |
float |
pivotX |
旋轉的x軸軸點的座標 |
float |
PivotY |
旋轉的y軸軸點的座標 |
float |
例子:
<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromDegrees="0"
android:toDegrees="90"
android:pivotX="0%"
android:pivotY="0%"
android:duration="2000"
android:fillAfter="true">
</rotate>
透明度動畫
作用:使View改變透明度
標籤:<alpha>
類:AlphaAnimation
屬性 |
含義 |
值類型 |
fromAlpha |
透明度的起始值,取值範圍0-1 |
float |
toAlpha |
透明度的結束值,取值範圍0-1 |
float |
例子:
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:fromAlpha="1"
android:toAlpha="0"
android:duration="2000"
android:fillAfter="true">
</alpha>
動畫集合
作用:動畫的集合,其中可以包含多個動畫,也可以包括若干個動畫集合
標籤:<set>
類:AnimationSet
例子:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="2000"
android:fillAfter="true">
<translate
android:fromXDelta="0"
android:toXDelta="100%"
android:fromYDelta="0"
android:toYDelta="100%" />
<alpha
android:fromAlpha="1"
android:toAlpha="0" />
<rotate
android:fromDegrees="0"
android:toDegrees="90"
android:pivotX="0%"
android:pivotY="0%" />
<scale
android:fromXScale="100%"
android:toXScale="200%"
android:fromYScale="100%"
android:toYScale="200%"
android:pivotX="0%"
android:pivotY="0%" />
</set>
動畫的使用
xml中定義的動畫
- 使用AnimationUtils加載動畫
Animation animation= AnimationUtils.loadAnimation(this,R.anim.anima_name);
- 需要使用動畫的view調用startAnimation方法開啓動畫
view.startAnimation(animation);
動畫狀態的監聽
通過對動畫設置setAnimationListener對動畫設置監聽
onAnimationStart:動畫開啓時
onAnimationEnd:動畫結束時
setAnimationListener:動畫重複時
animation.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
加入我的行列
微信公衆號
QQ羣: