android xml之動畫篇 alpha、scale、translate、rotate、set的屬性及用法 和
阿新 • • 發佈:2019-02-19
1.簡介
Android的補間動畫TweenAnimation由四種類型組成:alpha、scale、translate、rotate,對應android官方文件地址:《Animation Resources》
逐幀動畫 FrameAnimation(也稱Drawable Animation ):animation-listalpha |
漸變透明度動畫效果 |
scale |
漸變尺寸伸縮動畫效果 |
translate |
畫面轉換位置移動動畫效果 |
rotate |
畫面轉移旋轉動畫效果 |
animation-list :通過幾張圖片的播放展示動畫
2 .使用
1 .在工程的位置 : res/anim資料夾下 幀動畫 res/drawable資料夾
2. 使用方式: R.anim.***你的名字 ,幀動畫 R.drawable.***你的名字
3.各個擊破
1.alpha(透明度漸變)
<strong><span style="font-size:18px;">淡出效果 <?xml version="1.0" encoding="utf-8"?> <alpha xmlns:android="http://schemas.android.com/apk/res/android" android:duration="500" android:fromAlpha="1.0" android:toAlpha="0.0" /></span></strong>
<strong><span style="font-size:18px;">fromAlpha:開始時透明度 toAlpha:結束時透明度 duration:動畫持續時間</span></strong>
其他的一些屬性
- android:fillAfter 如果設定為true,控制元件動畫結束時,將保持動畫最後時的狀態
- android:fillBefore 如果設定為true,控制元件動畫結束時,還原到開始動畫前的狀態
- android:fillEnabled 與android:fillBefore 效果相同,都是在動畫結束時,將控制元件還原到初始化狀態
- android:repeatCount 重複次數
- android:repeatMode 重複型別,有reverse和restart兩個值,reverse表示倒序回放,restart表示重新放一遍,必須與repeatCount一起使 用才能看到效果。因為這裡的意義是重複的型別,即回放時的動作。
- android:interpolator 設定插值器,其實就是指定的動作效果,比如彈跳效果等,不在這小節中講解,後面會單獨列出一單講解。
2.scale(尺寸伸縮)
<?xml version="1.0" encoding="utf-8"?>
<scale xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator= "@android:anim/decelerate_interpolator"
android:duration="10000"
android:fromXScale="0.0"
android:fromYScale="0.0"
android:pivotX="50%"
android:pivotY="50%"
android:repeatCount="1"
android:repeatMode="reverse"
android:startOffset="0"
android:toXScale="1.5"
android:toYScale="1.5" />
interpolator指定動畫插入器,常見的有加速減速插入器accelerate_decelerate_interpolator,加速插入器elerate_interpolator,減速插入器decelerate_interpolator。
fromXScale,fromYScale,動畫開始前X,Y的縮放,0.0為不顯示,1.0為正常大小
toXScale,toYScale,動畫最終縮放的倍數,1.0為正常大小,大於1.0放大
pivotX,pivotY動畫起始位置,相對於螢幕的百分比,兩個都為50%表示動畫從螢幕中間開始
startOffset,動畫多次執行的間隔時間,如果只執行一次,執行前會暫停這段時間,單位毫秒 duration,一次動畫效果消耗的時間,單位毫秒,值越小動畫速度越快
repeatCount,動畫重複的計數,動畫將會執行該值+1次
repeatMode,動畫重複的模式,reverse為反向,當第偶次執行時,動畫方向會相反。restart為重新執行,方向不變
3.translat(位置轉換)
<strong><span style="font-size:18px;"><?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="10000"
android:fromXDelta="320"
android:fromYDelta="480"
android:toXDelta="0"
android:toYDelta="0" /></span></strong>
<strong><span style="font-size:18px;">
fromXDelta,fromYDelta 起始時X,Y座標,螢幕右下角的座標是X:320,Y:480
toXDelta,toYDelta 動畫結束時X,Y的座標</span></strong>
在這些屬性裡面還可以加上%和p,例如:
Android:toXDelta="100%",表示自身的100%,也就是從View自己的位置開始。
android:toXDelta="80%p",表示父層View的80%,是以它父層View為參照的。
4.rotate(旋轉)
<span style="font-size:14px;"><?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="10000"
android:fromDegrees="300"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:pivotX="10%"
android:pivotY="100%"
android:toDegrees="-360" /></span>
<span style="font-size:14px;">duration 時間 fromDegrees開始時的角度 toDegrees動畫結束時角度 結束時旋轉到的角度位置,正值代表順時針方向度數,負值程式碼逆時針方向度數</span>
-
- android:interpolator 設定插值器,其實就是指定的動作效果,比如彈跳效果等,
-
- android:pivotX 縮放起點X軸座標,可以是數值、百分數、百分數p 三種樣式,比如 50、50%、50%p,
- android:pivotY 縮放起點Y軸座標,可以是數值、百分數、百分數p 三種樣式,比如 50、50%、50%p
- android:fillAfter 如果設定為true,控制元件動畫結束時,將保持動畫最後時的狀態
- android:fillBefore 如果設定為true,控制元件動畫結束時,還原到開始動畫前的狀態
- android:fillEnabled 與android:fillBefore 效果相同,都是在動畫結束時,將控制元件還原到初始化狀態
- android:repeatCount 重複次數
- android:repeatMode 重複型別,有reverse和restart兩個值,reverse表示倒序回放,restart表示重新放一遍,必須與repeatCount一起使用才能看到效果。因為這裡的意義是重複的型別,即回放時的動作。
4.組合
如果想將這些動畫進行組合的話使用 set
<span style="font-size:14px;"><?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="3000"
android:fillAfter="true">
<alpha
android:fromAlpha="0.0"
android:toAlpha="1.0"/>
<scale
android:fromXScale="0.0"
android:toXScale="1.4"
android:fromYScale="0.0"
android:toYScale="1.4"
android:pivotX="50%"
android:pivotY="50%"/>
<rotate
android:fromDegrees="0"
android:toDegrees="720"
android:pivotX="50%"
android:pivotY="50%"/>
</set> </span>
- android:duration 動畫持續時間,以毫秒為單位
- android:fillAfter 如果設定為true,控制元件動畫結束時,將保持動畫最後時的狀態
- android:fillBefore 如果設定為true,控制元件動畫結束時,還原到開始動畫前的狀態
- android:fillEnabled 與android:fillBefore 效果相同,都是在動畫結束時,將控制元件還原到初始化狀態
- android:repeatCount 重複次數
- android:repeatMode 重複型別,有reverse和restart兩個值,reverse表示倒序回放,restart表示重新放一遍,必須與repeatCount一起使用才能看到效果。因為這裡的意義是重複的型別,即回放時的動作。
- android:interpolator 設定插值器,其實就是指定的動作效果,比如彈跳效果等,不在這小節中講解,後面會單獨列出一單講解。
5幀動畫 animation-list
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false" >
<strong><span style="color:#006600;"><!--
根標籤為animation-list,其中oneshot代表著是否只展示一遍,設定為false會不停的迴圈播放動畫
根標籤下,通過item標籤對動畫中的每一個圖片進行宣告
android:duration 表示展示所用的該圖片的時間長度
--> </span></strong>
<item
android:drawable="@drawable/tutorial1_icon1"
android:duration="200"/>
<item
android:drawable="@drawable/tutorial1_icon2"
android:duration="200"/>
</animation-list>
5.控制元件的使用
補間動畫TweenAnimation Animation animation = AnimationUtils.loadAnimation(mContext, R.anim.scanim); textView.startAnimation(scaleAnimation)動畫加監聽
alpha.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
幀動畫的使用
imageView.setImageResource(R.drawable.t1_frame_animation);
AnimationDrawable animationDrawable = (AnimationDrawable)imageView.getDrawable();
t1_icon1_animationDrawable.start();
動畫的xml同樣可以設定給 src 屬性,然後呼叫 getDrawble().start() 來播放動畫
幀動畫停下來
if(animationDrawable.isRunning()){
animationDrawable.stop();
}