補間動畫(Tween)View Animation


一、 alpha:漸變透明度動畫效果


1. 代碼方式實現(xiàn)

AlphaAnimation alphaAnimation=new AlphaAnimation(0.1f,1.0f);
alphaAnimation.setDuration(1000);
imageView.startAnimation(alphaAnimation);
  • 第一個參數(shù):起始透明度摩渺。
  • 第二個參數(shù):結束透明度
  • 0.0f 全透明
    1.0f 不透明

2. xml 方式實現(xiàn)

<?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>
Animation alphaAnimation=AnimationUtils.loadAnimation(this, R.anim.alpha);  //加載Xml文件中的動畫
imageView.startAnimation(alphaAnimation);

二、 scale:漸變尺寸伸縮動畫效果


1. 代碼方式實現(xiàn)

ScaleAnimation scaleAnimation=new ScaleAnimation(0.0f,1.0f,0.0f,1.0f, 
                ScaleAnimation.RELATIVE_TO_SELF,1.0f,ScaleAnimation.RELATIVE_TO_SELF,0.0f);
scaleAnimation.setDuration(1000);
imageView.startAnimation(scaleAnimation);
  • 第一個參數(shù):起始時 X坐標上的伸縮尺寸为肮。
  • 第二個參數(shù):結束時 X坐標上的伸縮尺寸
  • 第三個參數(shù):起始時 Y坐標上的伸縮尺寸肤京。
  • 第四個參數(shù):結束時 Y坐標上的伸縮尺寸颊艳。
  • 0.0f表示收縮到?jīng)]有
    1.0f表示正常無伸縮
    值小于1.0f表示收縮
    值大于1.0f表示放大
  • 第五個參數(shù):動畫在X軸相對于物件位置類型
  • 第六個參數(shù):動畫相對于物件的X坐標的開始位置忘分。
  • 第七個參數(shù):動畫在Y軸相對于物件位置類型棋枕。
  • 第八個參數(shù):動畫相對于物件的Y坐標的開始位置
  • 0.0f妒峦,0.0f 在左上角
    0.0f重斑,1.0f 在左下角
    1.0f,1.0f 在右下角
    0.5f肯骇,0.5f 在中間

2. xml 方式實現(xiàn)

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" > 
    <scale 
        android:duration="1000" 
        android:fillAfter="false" 
        android:fromXScale="0.0" 
        android:fromYScale="0.0" 
        android:toXScale="1.4" 
        android:toYScale="1.4"
        android:interpolator="@android:anim/accelerate_decelerate_interpolator" 
        android:pivotX="50%" 
        android:pivotY="50%"  />
</set>
Animation scaleAnimation=AnimationUtils.loadAnimation(this, R.anim.scale);  //加載Xml文件中的動畫
imageView.startAnimation(scaleAnimation);

三窥浪、translate:畫面轉換位置移動動畫效果


1. 代碼方式實現(xiàn)

TranslateAnimation translateAnimation=new TranslateAnimation(0,100,0,100);
translateAnimation.setDuration(1000);
translateAnimation.setInterpolator(this, android.R.anim.cycle_interpolator);
translateAnimation.setFillAfter(true);
imageView.startAnimation(translateAnimation);
  • 第一個參數(shù):動畫起始時 X坐標上的移動位置
  • 第二個參數(shù):**動畫結束時 X坐標上的移動位置 **笛丙。
  • 第三個參數(shù):**動畫起始時 Y坐標上的移動位置 **漾脂。
  • 第四個參數(shù):動畫結束時 Y坐標上的移動位置

2. xml 方式實現(xiàn)

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" > 
    <translate 
        android:duration="2000" 
        android:fromXDelta="30" 
        android:fromYDelta="30" 
        android:toXDelta="-80" 
        android:toYDelta="300" /> 
</set>
Animation translateAnimation=AnimationUtils.loadAnimation(this, R.anim.translate);  //加載Xml文件中的動畫
imageView.startAnimation(translateAnimation);

四胚鸯、rotate:畫面轉移旋轉動畫效果


1. 代碼方式實現(xiàn)

RotateAnimation rotateAnimation=new RotateAnimation(0.0f,360.0f, 
            Animation.RELATIVE_TO_SELF,0.0f,Animation.RELATIVE_TO_SELF, 0.5f);
rotateAnimation.setDuration(3000);
rotateAnimation.setFillAfter(true);
imageView.startAnimation(rotateAnimation);
  • 第一個參數(shù):動畫起始時的旋轉角度
  • 第二個參數(shù):動畫旋轉到的角度
  • 第三個參數(shù):動畫在X軸相對于物件位置類型
  • 第四個參數(shù):動畫相對于物件的X坐標的開始位置
  • 第五個參數(shù):動畫在Y軸相對于物件位置類型
  • 第六個參數(shù):動畫相對于物件的Y坐標的開始位置

2. xml 方式實現(xiàn)

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" > 
    <rotate 
        android:duration="3000" 
        android:fromDegrees="0" 
        android:toDegrees="350" 
        android:interpolator="@android:anim/accelerate_decelerate_interpolator" 
        android:pivotX="50%" 
        android:pivotY="50%" /> 
</set>
Animation rotateAnimation=AnimationUtils.loadAnimation(this, R.anim.rotate);  //加載Xml文件中的動畫
imageView.startAnimation(rotateAnimation);

五骨稿、通用方法


  1. setDuration(long durationMills)
    設置動畫持續(xù)時間(單位:毫秒)
  2. setFillAfter(Boolean fillAfter)
    如果fillAfter的值為true,則動畫執(zhí)行后,控件將停留在執(zhí)行結束的狀態(tài)
  3. setFillBefore(Boolean fillBefore)
    如果fillBefore的值為true姜钳,則動畫執(zhí)行后坦冠,控件將回到動畫執(zhí)行之前的狀態(tài)
  4. setStartOffSet(long startOffSet)
    設置動畫執(zhí)行之前的等待時間
  5. setRepeatCount(int repeatCount)
    設置動畫重復執(zhí)行的次數(shù)

六、Interpolator:動畫插入器


animation.setInterpolator(this, android.R.anim.cycle_interpolator);
animation.setInterpolator(new AccelerateInterpolator());

android:interpolator="@android:anim/accelerate_decelerate_interpolator" 
  1. AccelerateInterpolator
    加速哥桥,開始時慢中間加速
  2. DecelerateInterpolator
    減速辙浑,開始時快然后減速
  3. AccelerateDecelerateInterolator
    先加速后減速,開始結束時慢拟糕,中間加速
  4. AnticipateInterpolator
    反向判呕,先向相反方向改變一段再加速播放
  5. AnticipateOvershootInterpolator
    反向加超越,先向相反方向改變已卸,再加速播放佛玄,會超出目的值然后緩慢移動至目的值
  6. BounceInterpolator
    彈球效果,快到目的值時值會跳躍累澡,如目的值100梦抢,后面的值可能依次為85,77愧哟,70奥吩,80哼蛆,90,100
  7. CycleIinterpolator
    循環(huán)霞赫,動畫循環(huán)一定次數(shù)腮介,值的改變?yōu)橐徽液瘮?shù):Math.sin(2 x mCycles x Math.PI x input)
  8. LinearInterpolator
    線性,線性均勻改變
  9. OvershottInterpolator
    超越端衰,最后超出目的值然后緩慢改變到目的值

七叠洗、AnimationSet 實現(xiàn)多種動畫混合效果


  • 同時播放,也可以給不同動畫分別設置 setStartOffset() 開始偏移來順序播放旅东。

1. 代碼方式實現(xiàn)

AnimationSet animationSet=new AnimationSet(true);

AlphaAnimation alphaAnimation=AnimationUtils.loadAnimation(this, R.anim.alpha);
ScaleAnimation scaleAnimation=AnimationUtils.loadAnimation(this, R.anim.scale);
TranslateAnimation translateAnimation=new TranslateAnimation(0,100,0,100);
RotateAnimation rotateAnimation=new RotateAnimation(0.0f,360.0f, 
          Animation.RELATIVE_TO_SELF,0.0f,Animation.RELATIVE_TO_SELF, 0.5f);

alphaAnimation.setStartOffset(0);
scaleAnimation.setStartOffset(2000);
translateAnimation.setStartOffset(4000);
rotateAnimation.setStartOffset(6000);

animationSet.addAnimation(translateAnimation);
animationSet.addAnimation(alphaAnimation);
animationSet.addAnimation(rotateAnimation);
animationSet.addAnimation(scaleAnimation);

animationSet.setInterpolator(this, android.R.anim.anticipate_interpolator);
animationSet.setDuration(2000);
imageView.startAnimation(animationSet);

2. xml 方式實現(xiàn)

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/accelerate_interpolator"
    android:shareInterpolator="true">
  
    <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>    
AnimationSet animationSet=(AnimationSet) AnimationUtils.loadAnimation(this, R.anim.animset);

雖然可以通過代碼的方式定義動畫灭抑,但是Android官方還是建議在xml中定義動畫效果,這樣可做到最大程度上的解耦抵代,方便項目的后期維護腾节。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市荤牍,隨后出現(xiàn)的幾起案子案腺,更是在濱河造成了極大的恐慌,老刑警劉巖康吵,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件劈榨,死亡現(xiàn)場離奇詭異,居然都是意外死亡涎才,警方通過查閱死者的電腦和手機鞋既,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來耍铜,“玉大人,你說我怎么就攤上這事跌前∽丶妫” “怎么了?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵抵乓,是天一觀的道長伴挚。 經(jīng)常有香客問我,道長灾炭,這世上最難降的妖魔是什么茎芋? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮蜈出,結果婚禮上田弥,老公的妹妹穿的比我還像新娘。我一直安慰自己铡原,他們只是感情好偷厦,可當我...
    茶點故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布商叹。 她就那樣靜靜地躺著,像睡著了一般只泼。 火紅的嫁衣襯著肌膚如雪剖笙。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天请唱,我揣著相機與錄音弥咪,去河邊找鬼。 笑死十绑,一個胖子當著我的面吹牛酪夷,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播孽惰,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼晚岭,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了勋功?” 一聲冷哼從身側響起坦报,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎狂鞋,沒想到半個月后片择,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡骚揍,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年字管,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片信不。...
    茶點故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡嘲叔,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出抽活,到底是詐尸還是另有隱情硫戈,我是刑警寧澤,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布下硕,位于F島的核電站丁逝,受9級特大地震影響,放射性物質發(fā)生泄漏梭姓。R本人自食惡果不足惜霜幼,卻給世界環(huán)境...
    茶點故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望誉尖。 院中可真熱鬧罪既,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至猩谊,卻和暖如春千劈,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背牌捷。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工墙牌, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人暗甥。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓喜滨,卻偏偏與公主長得像,于是被迫代替她去往敵國和親撤防。 傳聞我的和親對象是個殘疾皇子虽风,可洞房花燭夜當晚...
    茶點故事閱讀 44,927評論 2 355

推薦閱讀更多精彩內(nèi)容