智能終端軟件開發(fā)——補(bǔ)間動畫(一)

補(bǔ)間動畫是通過對View中的內(nèi)容進(jìn)行一系列的圖形變換來實現(xiàn)動畫效果,其中圖形變換包括平移喷好、縮放翔横、旋轉(zhuǎn)、改變透明度等梗搅。補(bǔ)間動畫的效果可以通過XML文件來定義禾唁,也可以通過代碼方式來實現(xiàn),通常情況下以XML形式定義的動畫都會放置在程序res/anim(自定義的)文件夾下无切。
Android提供了4種補(bǔ)間動畫荡短,分別是透明度漸變動畫、旋轉(zhuǎn)動畫哆键、縮放動畫掘托、平移動畫,下面分別針對這4種動畫進(jìn)行詳解籍嘹。

1.透明度漸變動畫

透明度漸變動畫是指通過改變View組件透明度來實現(xiàn)的漸變效果闪盔。它主要通過為動畫指定開始時的透明度,結(jié)束時的透明度以及動畫持續(xù)時間來創(chuàng)造動畫辱士,在XML文件中定義透明度漸變動畫泪掀,具體代碼如下:
alpha_animation.xml
···
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha
android:interpolator="@android:anim/linear_interpolator"
android:repeatMode="reverse"
android:repeatCount="infinite"
android:duration="1000"
android:fromAlpha="1.0"
android:toAlpha="0.0"/>
</set>
···
上述代碼定義了一個讓View從完全不透明到透明,持續(xù)時間1s的動畫颂碘。透明度漸變動畫常用的屬性如下族淮。

  • interpolator:用于控制動畫的變化速度,一般值為@android:anim/linear_interpolator(勻速改變)凭涂、@android:anim/laccelerate_interpolator(開始慢祝辣,后來加速)等;
  • repeatMode:用于指定動畫重復(fù)的方式切油,可選值為reverse(反向)蝙斜、restart(重新開始);
  • repeatCount:用于制定動畫重復(fù)次數(shù)澎胡,屬性值可以為正整數(shù)孕荠,也可以為infinite(無限循壞);
  • duration:用于指定動畫播放時長攻谁;
  • fromAlpha:用于指定動畫開始時的透明度稚伍,0.0為完全完全透明,1.0為不透明戚宦;
  • toAlpha:用于指定動畫結(jié)束時的透明度0.0為完全完全透明个曙,1.0為不透明。

2.旋轉(zhuǎn)動畫

旋轉(zhuǎn)動畫就是通過為動畫指定開始時的縮放系數(shù)受楼、結(jié)束時的縮放系數(shù)以及動畫持續(xù)時長來創(chuàng)將動畫的垦搬,在XML中定義縮放動畫呼寸,具體代碼如下:
rotate_animation.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:repeatMode="reverse"
        android:repeatCount="infinite"
        android:duration="1000"/>
</set>

上述代碼定義了讓View從0°旋轉(zhuǎn)到360°持續(xù)時間為1s的旋轉(zhuǎn)動畫,旋轉(zhuǎn)動畫常用的屬性如下猴贰。

  • fromSegress:指定動畫開始時的角度对雪;
  • toDegrees:指定動畫結(jié)束時的角度;
  • pivotX:指定軸心的x坐標(biāo)米绕;
  • pivotY: 指定軸心y坐標(biāo)瑟捣。

2.縮放動畫

縮放動畫就是通過動畫指定開始時的縮放系數(shù)、結(jié)束時的縮放系數(shù)以及動畫持續(xù)時長來創(chuàng)建動畫的栅干,在XML文件中定義縮放動畫蝶柿,具體代碼如下:
scale_animation.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <scale
        android:repeatMode="reverse"
        android:repeatCount="infinite"
        android:duration="3000"
        android:fromXScale="1.0"
        android:fromYScale="1.0"
        android:toXScale="0.5"
        android:toYScale="0.5"
        android:pivotX="50%"
        android:pivotY="50%"/>
</set>

上述代碼定義了一個讓View在x軸上縮小一半的,y軸上縮小一半的縮放動畫非驮。縮放動畫的常用屬性如下雏赦。

  • fromXScale:指定動畫開始時x軸上的縮放系數(shù)鳖链,值為1.0表示不變化莲组;
  • fromYScate:指定動畫開始時y軸上的縮放系數(shù),值為1.0表示不變化;
  • toXScate:指定動畫結(jié)束時x軸上的縮放系數(shù)绝骚,值為1.0表示不變化;
  • toYScate:指定動畫結(jié)束時y軸上的縮放系數(shù)茂腥,值為1.0表示不變化井联;

4.平移動畫

平移動畫就是通過為動畫指定開始位置、結(jié)束位置以及動畫持續(xù)時長來創(chuàng)建動畫的寥掐,在XML文件中定義平移動畫靴寂,具體代碼如下;
translate_animation.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:fromXDelta="0.0"
        android:fromYDelta="0.0"
        android:toXDelta="100"
        android:toYDelta="0.0"
        android:repeatCount="infinite"
        android:repeatMode="reverse"
        android:duration="4000"/>
</set>

上述代碼定義了一個讓View從起始x(0.0)位置平移到結(jié)束x(100)位置召耘,持續(xù)時間為4s的平移動畫百炬。需要注意的是,這里的坐標(biāo)污它,這里的坐標(biāo)并不是屏幕像素的坐標(biāo)剖踊,而是相對于View的所在位置的坐標(biāo)。開始位置為0.0即表示在View最開始的地方平移(即布局文件定義View所在位置)衫贬。
上述代碼用到了平移動畫的一些常用屬性德澈,其常用屬性說明如下。

  • formXDelta:指定動畫開始時View的x軸坐標(biāo)固惯。
  • formYDelta:指定動畫開始時View的y軸坐標(biāo)梆造。
  • toXDelta:指定動畫結(jié)束時View的x軸坐標(biāo)。
  • toYDelta:指定動畫結(jié)束時View的y軸坐標(biāo)葬毫。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末澳窑,一起剝皮案震驚了整個濱河市斧散,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌摊聋,老刑警劉巖鸡捐,帶你破解...
    沈念sama閱讀 211,743評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異麻裁,居然都是意外死亡箍镜,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評論 3 385
  • 文/潘曉璐 我一進(jìn)店門煎源,熙熙樓的掌柜王于貴愁眉苦臉地迎上來色迂,“玉大人,你說我怎么就攤上這事手销⌒” “怎么了?”我有些...
    開封第一講書人閱讀 157,285評論 0 348
  • 文/不壞的土叔 我叫張陵锋拖,是天一觀的道長诈悍。 經(jīng)常有香客問我,道長兽埃,這世上最難降的妖魔是什么侥钳? 我笑而不...
    開封第一講書人閱讀 56,485評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮柄错,結(jié)果婚禮上舷夺,老公的妹妹穿的比我還像新娘。我一直安慰自己售貌,他們只是感情好给猾,可當(dāng)我...
    茶點故事閱讀 65,581評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著颂跨,像睡著了一般耙册。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上毫捣,一...
    開封第一講書人閱讀 49,821評論 1 290
  • 那天详拙,我揣著相機(jī)與錄音,去河邊找鬼蔓同。 笑死饶辙,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的斑粱。 我是一名探鬼主播弃揽,決...
    沈念sama閱讀 38,960評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了矿微?” 一聲冷哼從身側(cè)響起痕慢,我...
    開封第一講書人閱讀 37,719評論 0 266
  • 序言:老撾萬榮一對情侶失蹤涌矢,失蹤者是張志新(化名)和其女友劉穎掖举,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體娜庇,經(jīng)...
    沈念sama閱讀 44,186評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,516評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了惠猿。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片羔砾。...
    茶點故事閱讀 38,650評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖偶妖,靈堂內(nèi)的尸體忽然破棺而出姜凄,到底是詐尸還是另有隱情,我是刑警寧澤趾访,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布态秧,位于F島的核電站,受9級特大地震影響扼鞋,放射性物質(zhì)發(fā)生泄漏申鱼。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,936評論 3 313
  • 文/蒙蒙 一云头、第九天 我趴在偏房一處隱蔽的房頂上張望捐友。 院中可真熱鬧,春花似錦溃槐、人聲如沸匣砖。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽猴鲫。三九已至对人,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間拂共,已是汗流浹背牺弄。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留匣缘,地道東北人猖闪。 一個月前我還...
    沈念sama閱讀 46,370評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像肌厨,于是被迫代替她去往敵國和親培慌。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,527評論 2 349

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

  • 【Android 動畫】 動畫分類補(bǔ)間動畫(Tween動畫)幀動畫(Frame 動畫)屬性動畫(Property ...
    Rtia閱讀 6,115評論 1 38
  • 1 背景 不能只分析源碼呀柑爸,分析的同時也要整理歸納基礎(chǔ)知識吵护,剛好有人微博私信讓全面說說Android的動畫,所以今...
    未聞椛洺閱讀 2,697評論 0 10
  • 前言 動畫時Android開發(fā)中使用頻率比較高的功能瓮恭。 對Android提供的補(bǔ)間動畫,幀動畫以及屬性動畫做出歸納...
    銀灬楓閱讀 1,878評論 0 8
  • 一: 傳統(tǒng) View 動畫(Tween/Frame) 1.1 Tween 動畫 主要有 4 中:縮放厘熟、平移屯蹦、漸變、...
    dfg_fly閱讀 712評論 1 2
  • 最近工作比較清閑绳姨,所以想系統(tǒng)的復(fù)習(xí)和學(xué)習(xí)下自己比較短缺的知識登澜,所以。飘庄。脑蠕。 程序運行效果圖: Android動畫主要...
    小沈新手閱讀 504評論 0 1