Android之視圖動畫Animation
動畫模式
View Animation主要有兩種動畫模式:
一種是tweened animation(漸變動畫):XML中:alphaJavaCode:AlphaAnimationXML中:scale
JavaCode:ScaleAnimation
一種是frame by frame(畫面轉換動畫)
XML中:translateJavaCode:TranslateAnimationXML中:rotate
JavaCode:RotateAnimationalpha透明度
文件名:my_alpha_action.xml
<?xml version="1.0" encoding="utf-8"?>nhttp://schemas.android.com/apk/res/android"nandroid:fromAlpha="0.1"nandroid:toAlpha="1.0"nandroid:duration="3000"/>n
透明度控制動畫效果 alpha
浮點型值:fromAlpha 屬性為動畫起始時透明度toAlpha 屬性為動畫結束時透明度
說明:0.0表示完全透明1.0表示完全不透明以上值取0.0-1.0之間的float數據類型的數字長整型值:duration 屬性為動畫持續時間說明:時間以毫秒為單位在程序中引用XML資源核心代碼如下:
Animation mAnimation ;nmAnimation = AnimationUtils.loadAnimation(this, R.anim.anim);nTextView text = (TextView)findViewById(R.id.textview00);ntext.setAnimation(mAnimation);n
AlphaAnimation類對象構造
AlphaAnimation(float fromAlpha, float toAlpha)第一個參數fromAlpha為 動畫開始時候透明度第二個參數toAlpha為 動畫結束時候透明度private AlphaAnimation myAnimation_Alpha;n// 0.0表示完全透明,1.0表示完全不透明nmyAnimation_Alpha=new AlphaAnimation(0.1f, 1.0f);n//設置動畫持續時間,單位為毫秒nmyAnimation_Alpha.setDuration(5000);n
如何使用Java代碼中的動畫效果
public void startAnimation (Animation animation)n
rotate旋轉
文件名: my_rotate_action.xml
<?xml version="1.0" encoding="utf-8"?>nhttp://schemas.android.com/apk/res/android"nandroid:interpolator="@android:anim/accelerate_decelerate_interpolator"nandroid:fromDegrees="0"nandroid:toDegrees="+350"nandroid:pivotX="50%"nandroid:pivotY="50%"nandroid:duration="3000" />n
rotate 旋轉動畫效果
屬性:interpolator 指定一個動畫的插入器在我試驗過程中,使用android.res.anim中的資源時候發現有三種動畫插入器accelerate_decelerate_interpolator 加速-減速 動畫插入器accelerate_interpolator 加速-動畫插入器
decelerate_interpolator 減速- 動畫插入器其他的屬於特定的動畫效果
浮點數型值:fromDegrees 屬性為動畫起始時物件的角度toDegrees 屬性為動畫結束時物件旋轉的角度 可以大於360度說明:當角度為負數——表示逆時針旋轉當角度為正數——表示順時針旋轉(負數from——to正數:順時針旋轉)(負數from——to負數:逆時針旋轉)
(正數from——to正數:順時針旋轉)(正數from——to負數:逆時針旋轉)pivotX 屬性為動畫相對於物件的X坐標的開始位置pivotY 屬性為動畫相對於物件的Y坐標的開始位置說明:以上兩個屬性值 從0%-100%中取值50%為物件的X或Y方向坐標上的中點位置長整型值,時間以毫秒為單位
duration 屬性為動畫持續時間RotateAnimation類對象構造
RotateAnimation(float fromDegrees, float toDegrees,nint pivotXType, float pivotXValue, int pivotYType, float pivotYValue)n
第一個參數fromDegrees為動畫起始時的旋轉角度
第二個參數toDegrees為動畫旋轉到的角度第三個參數pivotXType為動畫在X軸相對於物件位置類型第四個參數pivotXValue為動畫相對於物件的X坐標的開始位置第五個參數pivotYType為動畫在Y軸相對於物件位置類型第六個參數pivotYValue為動畫相對於物件的Y坐標的開始位置//RotateAnimation類對象定義nprivate AlphaAnimation myAnimation_Alpha;nmyAnimation_Rotate=new RotateAnimation(0.0f, +350.0f,nAnimation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF, 0.5f);n//設置動畫持續時間,3000毫秒nmyAnimation_Rotate.setDuration(3000);n
如何使用Java代碼中的動畫效果
public void startAnimation (Animation animation)n
scale尺寸伸縮
文件名: my_scale_action.xml
<?xml version="1.0" encoding="utf-8"?>nhttp://schemas.android.com/apk/res/android">nandroid:interpolator="@android:anim/accelerate_decelerate_interpolator"nandroid:fromXScale="0.0"nandroid:toXScale="1.4"nnandroid:fromYScale="0.0"nandroid:toYScale="1.4"nnandroid:pivotX="50%"nandroid:pivotY="50%"nnandroid:fillAfter="false"nandroid:duration="700" />n
尺寸伸縮動畫效果 scale
屬性:interpolator 指定一個動畫的插入器
在我試驗過程中,使用android.res.anim中的資源時候發現有三種動畫插入器accelerate_decelerate_interpolator 加速-減速 動畫插入器
accelerate_interpolator 加速-動畫插入器decelerate_interpolator 減速- 動畫插入器其他的屬於特定的動畫效果
浮點型值:fromXScale 屬性為動畫起始時 X坐標上的伸縮尺寸toXScale 屬性為動畫結束時 X坐標上的伸縮尺寸fromYScale 屬性為動畫起始時Y坐標上的伸縮尺寸
toYScale 屬性為動畫結束時Y坐標上的伸縮尺寸
說明:
以上四種屬性值0.0表示收縮到沒有
1.0表示正常無伸縮值小於1.0表示收縮值大於1.0表示放大pivotX 屬性為動畫相對於物件的X坐標的開始位置pivotY 屬性為動畫相對於物件的Y坐標的開始位置說明:
以上兩個屬性值 從0%-100%中取值
50%為物件的X或Y方向坐標上的中點位置長整型值:
duration 屬性為動畫持續時間說明:時間以毫秒為單位布爾型值:
fillAfter 屬性 當設置為true ,該動畫轉化在動畫結束後被應用ScaleAnimation類對象構造
ScaleAnimation(float fromX, float toX, float fromY, float toY,nint pivotXType, float pivotXValue, int pivotYType, float pivotYValue)n
第一個參數fromX為動畫起始時 X坐標上的伸縮尺寸
第二個參數toX為動畫結束時 X坐標上的伸縮尺寸第三個參數fromY為動畫起始時Y坐標上的伸縮尺寸第四個參數toY為動畫結束時Y坐標上的伸縮尺寸說明:以上四種屬性值0.0表示收縮到沒有1.0表示正常無伸縮值小於1.0表示收縮值大於1.0表示放大第五個參數pivotXType為動畫在X軸相對於物件位置類型第六個參數pivotXValue為動畫相對於物件的X坐標的開始位置第七個參數pivotXType為動畫在Y軸相對於物件位置類型第八個參數pivotYValue為動畫相對於物件的Y坐標的開始位置private AlphaAnimation myAnimation_Alpha;nmyAnimation_Scale =new ScaleAnimation(0.0f, 1.4f, 0.0f, 1.4f,nAnimation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);n//設置動畫持續時間,700毫秒nmyAnimation_Scale.setDuration(700);n
如何使用Java代碼中的動畫效果
public void startAnimation (Animation animation)n
translate位置轉移
文件名: my_translate_action.xml
<?xml version="1.0" encoding="utf-8"?>nnhttp://schemas.android.com/apk/res/android">n<translatenandroid:fromXDelta="30"nandroid:toXDelta="-80"nandroid:fromYDelta="30"nandroid:toYDelta="300"nandroid:duration="800"n/>n
translate 位置轉移動畫效果
整型值:fromXDelta 屬性為動畫起始時 X坐標上的位置toXDelta 屬性為動畫結束時 X坐標上的位置fromYDelta 屬性為動畫起始時 Y坐標上的位置
toYDelta 屬性為動畫結束時 Y坐標上的位置注意:沒有指定fromXType toXType fromYType toYType 時候,默認是以自己為相對參照物長整型值:duration 屬性為動畫持續時間說明:時間以毫秒為單位TranslateAnimation類對象構造
TranslateAnimation(float fromXDelta, float toXDelta,nfloat fromYDelta, float toYDelta)n
第一個參數fromXDelta為動畫起始時 X坐標上的移動位置
第二個參數toXDelta為動畫結束時 X坐標上的移動位置第三個參數fromYDelta為動畫起始時Y坐標上的移動位置第四個參數toYDelta為動畫結束時Y坐標上的移動位置private TranslateAnimation myAnimation_Translate;nmyAnimation_Translate =new TranslateAnimation(0f, 200f,400f, 400f);n//設置動畫持續時間, 2000毫秒nmyAnimation_Translate.setDuration(2000);n
如何使用Java代碼中的動畫效果
public void startAnimation (Animation animation)n
參考
官網:http://developer.android.com/intl/zh-cn/guide/topics/graphics/view-animation.html
本文原創發佈於微信公眾號「吳小龍同學」,不止於技術分享,不取悅別人,寫給懂的人看~公眾號二維碼
推薦閱讀:
※Google Pixel,這個兒子不一樣
※高效Android開發者必須知道的4個工具
※Android Oreo 中對後台任務的限制
※PS4 Remote Play
※Google對於 material design 的積極度?