天天看點

安卓——之Animation動畫特效

android初識屬性動畫---alpha、scale、translate、rotate、set的xml屬性及用法。

本文内容概述(知識點+2個小Demo)

1.簡介

Android

的animation由四種類型組成:alpha、scale、translate、rotate,

alpha:漸變透明度動畫效果

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

translate:畫面轉換位置移動動畫效果

rotate:畫面轉移旋轉動畫效果

動作定義檔案應該先在res下建立一個專門存放動畫的檔案夾,程式通路時采用R.anim.XXX.xml的方式

2、從Animation類繼承的屬性

android:duration 動畫持續時間,以毫秒為機關

android:fillAfter 如果設定為true,控件動畫結束時,将保持動畫最後時的狀态

android:fillBefore 如果設定為true,控件動畫結束時,還原到開始動畫前的狀态

android:repeatCount 重複次數 這裡

0表示展示一次

,1表示展示兩次,若要無限展示可以寫

android:repeatCount="infinite"

android:repeatMode 重複類型,有reverse和restart兩個值,reverse表示倒序回放,restart表示重新放一遍,必須與repeatCount一起使用才能看到效果。因為這裡的意義是重複的類型,即回放時的動作。

android:interpolator 設定插值器,其實就是

指定的動作效果

,比如彈跳效果等。

一、scale标簽——調節尺寸

scale标簽是縮放動畫,可以實作動态調控件尺寸的效果,有下面幾個屬性:

android:fromXScale 起始的X方向上相對自身的縮放比例,浮點值,比如1.0代表自身無變化,0.5代表起始時縮小一倍,2.0代表放大一倍;

android:toXScale 結尾的X方向上相對自身的縮放比例,浮點值;

android:fromYScale 起始的Y方向上相對自身的縮放比例,浮點值,

android:toYScale 結尾的Y方向上相對自身的縮放比例,浮點值;

android:pivotX 縮放起點X軸坐标,可以是數值、百分數、百分數p 三種樣式,比如 50、50%、50%p,當為數值時,表示在目前View的左上角,即原點處加上50px,做為起始縮放點;如果是50%,表示在目前控件的左上角加上自己寬度的50%做為起始點;如果是50%p,那麼就是表示在目前的左上角加上父控件寬度的50%做為起始點x軸坐标。

這裡主要說下pivotx和pivoty,個人了解就是本身預設縮放起點是左上角,而這個屬性就是改變這個點的。如果不設定這個屬性,動畫預設從左上角開始縮放,若設定了pivotX="50%",則縮放起始位置從左上角向右偏移個50px,類似于水準中心縮放了。android:pivotY 縮放起點Y軸坐标,取值及意義跟android:pivotX一樣。

二、alpha标簽——調節透明度

android:fromAlpha 動畫開始的透明度,從0.0 --1.0 ,

0.0表示全透明,1.0表示完全不透明

android:toAlpha 動畫結束時的透明度,也是從0.0 --1.0 ,0.0表示全透明,1.0表示完全不透明

三、rotate标簽——旋轉

android:fromDegrees 開始旋轉的角度位置,正值代表順時針方向度數,負值代碼逆時針方向度數

android:toDegrees 結束時旋轉到的角度位置,正值代表順時針方向度數,負值代碼逆時針方向度數

android:pivotX 縮放起點X軸坐标,可以是數值、百分數、百分數p 三種樣式,比如 50、50%、50%p,具體意義已在scale标簽中講述,這裡就不再重講

android:pivotY 縮放起點Y軸坐标,可以是數值、百分數、百分數p 三種樣式,比如 50、50%、50%p

四、translate标簽 —— 平移

android:fromXDelta 起始點X軸坐标,可以是數值、百分數、百分數p 三種樣式,比如 50、50%、50%p,具體意義已在scale标簽中講述,這裡就不再重講

android:fromYDelta 起始點Y軸從标,可以是數值、百分數、百分數p 三種樣式;

android:toXDelta 結束點X軸坐标

android:toYDelta 結束點Y軸坐标

還有

set标簽

,set标簽自已是沒有屬性的,他的屬性都是從Animation繼承而來,但當它們用于Set标簽時,就會對Set标簽下的所有子控件都産生作用。

其實就是動畫集合

設定動畫代碼(重點)

alpaAnimation = AnimationUtils.loadAnimation(this, R.anim.alphaanim); image_view.startAnimation(alpaAnimation);

1.心跳動Demo(動畫以XML方式實作)

在res下建立anim檔案夾,再new一個資源檔案寫動畫

安卓——之Animation動畫特效

size.xml代碼截圖

主界面代碼:

安卓——之Animation動畫特效

MainActivity.java代碼截圖

布局代碼:

安卓——之Animation動畫特效

activity_main.xml代碼截圖

運作效果(點選愛心):

安卓——之Animation動畫特效

圖檔發自簡書App

2.四種Tween動畫效果實踐Demo(動畫以Java代碼實作)

根據這5個步驟來實作動畫:
安卓——之Animation動畫特效

Animations的五個步驟

安卓——之Animation動畫特效

1

安卓——之Animation動畫特效

2

這就是動畫實作的步驟:
安卓——之Animation動畫特效

3

安卓——之Animation動畫特效

4

安卓——之Animation動畫特效

5

界面代碼差不多就以上這些了,布局代碼我就省略掉了,UI看自己心情設計...

小Tips:如果要讓按鈕效果更加具有互動性,可以這樣寫,就有了按鈕按下和沒按下的差別了
安卓——之Animation動畫特效

按鈕按下及沒按下的顯示效果

運作截圖:

安卓——之Animation動畫特效

Animation動畫實作

寫在最後,我是安卓萌新,如果有錯誤請告知,我及時改正~

繼續閱讀