android學習-動畫(基本的四種動畫)

來源:互聯網
上載者:User

先看段關於android中動畫設定檔的虛擬碼:

<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"      android:interpolator="@android:anim/accelerate_interpolator">     <alpha />     <rotate />     <scale/>     <translate/> </set> <?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android"     android:interpolator="@android:anim/accelerate_interpolator">    <alpha />    <rotate />    <scale/>    <translate/></set>


現在來慢慢理清楚:

 

xmlns:android="http://schemas.android.com/apk/res/android"  xmlns:android="http://schemas.android.com/apk/res/android

申明xml的命名空間,xmlns(xml namespace的縮寫),而冒號後面是給這個引用起的別名schemas是xml約束檔案,規定了xml中有哪些元素(標籤),元素有哪些屬性以及各元素的關係,當申明了命名空間和約束檔案後,就可以在改xml文檔中引用資源,存放在apk/res/android下的資源都可以訪問,比如在寫<rotate/>中的屬性時,用"android:"這樣來引用的,當然也可以自己定義自己的資源檔(比如test),就可以用"test:"這樣來引用。

 android:interpolator="@android:anim/decelerate_interpolator" android:interpolator="@android:anim/decelerate_interpolator"

首先明白interpolator是定義一個動畫的變動率,這使得基本的動畫效果(scale、alpha、translate、rotate)得以加速、減速以及重複等等,用通俗的話來講就是動畫的進度使用Interpolator來控制,控制效果有勻速、正加速、負加速、無規則變速等等,Interpolator介面只有一個抽象方法getInterpolation(float input),由此SDK中擴充了另外幾個類。

常用Interpolator類:
AccelerateInterpolator:動畫從開始到結束,變動率是一個加速的過程。
DecelerateInterpolator:動畫從開始到結束,變動率是一個減速的過程。
AccelerateDecelerateInterpolator:動畫從開始到結束,變動率是先加速後減速的過程。

androidSDK中動畫分為兩種,
一種是Tween Animation(漸層動畫):通過對情境裡的對象不斷地做映像變換處理,如平移、縮放、旋轉等。

一種是Frame Animation(幀動畫):順序播放實現做好的映像。

 


android中的四種動畫

四種動畫是android提供的基本動畫類型,在設定檔中,他們都可以放在<set></set>標籤中,那麼怎樣建立一個動畫效果呢。看下面的xml動畫設定檔:
第一步:在res目錄下建立一個名字為anim的檔案夾,並且在這個檔案夾下建立一個新的xml檔案,檔案名稱字自擬。
第二步:添加命名空間,即寫set標籤,並且指定動畫的控制器(可以不寫)。
第三步:開始制定和設定動畫類型及動畫初值。

請注意當有rotate標籤和translate標籤一起使用時,請將rotate標籤放在translate之前。

各個標籤的屬性含義

set標籤屬性的含義:
android:shareInterpolator—— 是否共用插入器,共用時,四個子節點都用一個插入器
android:interpolator ——指定一個動畫的插入器,使用系統資源
android:fillEnabled——當設定為true時,fillAfter和fillBefroe將會都為true,此時會忽略fillBefore和fillAfter兩種屬性
android:fillAfter——該動畫轉化是否在動畫結束後被應用boolean
android:fillBefore——該動畫轉化是否在動畫開始前被應用boolean
android:repeatMode—— 重複模式restart  或者 reverse
android:repeatCount ——重複次數integer
android:duration ——動畫期間integer
android:startOffset—— 動畫時間間隔long
android:zAdjustment——定義動畫zorder的變換normal 或者 top 或者 bottom

scale標籤屬性的含義:
android:interpolator——同set屬性
android:fromXScale——動畫開始時,x座標上的延伸尺寸(float 0.0表示收縮到最小,1.0表示無收縮)
android:toXScale——同理
android:fromYScale——同理
android:toYScale——同理
android:duration——動畫持續的時間(int 單位毫秒)
android:pivotX——動畫的開始時相對於物件的x位置(0%~100%)
android:pivotY——同理 
android:fillEnabled ——同set屬性
android:fillBefore——同set屬性
android:fillBefore——同set屬性
android:fillAfter——同set屬性
android:startOffset——同set屬性
android:repeatCount——同set屬性
android:repeatMode——同set屬性

rotate標籤屬性的含義:
android:fromDegrees—— 動畫開始時的角度(有加號或減號之分)
android:toDegrees——動畫結束時的角度(有加號或減號之分)
android:pivotX——可以理解為旋轉的中心(0%~100%)
android:pivotY——同理 
android:duration——動畫持續的時間(int 單位毫秒)

alpha標籤屬性的含義:
android:toAlpha——動畫結束時的透明度(float  0表示完全透明 1表示完全不透明)
android:duration——動畫持續的時間(int 單位毫秒)
android:fromAlpha——動畫開始時的透明度(float  0表示完全透明 1表示完全不透明)

translate標籤屬性的含義:
android:fromXDelta——動畫開始時,X座標上的位置integer  預設以自己為參照物
android:toXDelta——動畫結束時,X座標上的位置integer  預設以自己為參照物
android:fromYDelta——動畫開始時,Y座標上的位置integer  預設以自己為參照物
android:toYDelta——動畫結束時,Y座標上的位置integer  預設以自己為參照物

當然,scale,rotate,alpha,translate中的屬性不止這些,還有些和set標籤一樣,就沒有重複寫。到這裡android動畫最簡單的知識就完了。接下來還會繼續學習,繼續總結。

 


 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.