Android動畫之View動畫

 

看夠了文字博客?不如來嘗試看一下視頻博客吧

配套視頻地址:https://mp.weixin.qq.com/s/KpcwT-RH8kMIhWcuEcYDZw

簡介

View動畫的作用對象是view,支持的動畫效果一般包括平移、縮放、旋轉、透明度等四種。它屬於漸進式動畫,並且支持自定義。但是它執行的動畫只是視覺上的改變,真正的屬性及位置還在原先的地方。

創建view動畫可以通過TranslateAnimation、ScaleAnimation、RotateAnimation、AlphaAnimation等四種Animation的子類創建,也可以在xml中通過<translate>、<scale>、<rotate>、<alpha>等標籤來定義來定義,一般建議使用xml來定義。

對應關係:

名稱

標籤

平移動畫

TranslateAnimation

<translate>

縮放動畫

ScaleAnimation

<scale>

縮放動畫

RotateAnimation

<rotate>

透明度動畫

AlphaAnimation

<alpha>

集合動畫

AnimationSet

<set>

動畫的創建

常用共用屬性

屬性

作用

取值

duration

動畫的持續時間

float

fillAfter

動畫結束後是否保留結束狀態

boolean

interpolator

插值器

資源

shareInterpolator

集合中的動畫是否共享同一個插值器

boolean

startOffset

動畫延遲播放時間

float

repeatCount

動畫重複次數,數字爲負數時爲無限循環

float

repeatMode

重複的類型,reverse倒放,restart從新播放

reverse/restart

 

平移動畫

作用:使View在水平和豎直方向完成平移

標籤:<translate>

類:Traslate

屬性

含義

值類型

fromXDelta

X軸的起始值

float

toXDelta

X軸的結束值

float

fromYDelta

Y軸的起始值

float

toYDelta

Y軸的結束值

float

例子:

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromXDelta="0"
    android:toXDelta="100%"
    android:fromYDelta="0"
    android:toYDelta="100%"
    android:zAdjustment="bottom"
    android:duration="2000"
    android:repeatCount="-1"
    android:repeatMode="reverse"
    android:fillAfter="true">


</translate>

縮放動畫

作用:使View具有放大或者縮小的動畫效果

標籤:<scale>

類:ScaleAnimation

屬性

含義

值類型

fromXScale

水平方向縮放的起始值

float

toXScale

水平方向縮放的結束值

float

fromYScale

豎直方向縮放的起始值

float

toYScale

數值方向縮放的結束值

float

pivotX

縮放的x軸軸點的座標

float

PivotY

縮放的y軸軸點的座標

float

例子:

<?xml version="1.0" encoding="utf-8"?>
<scale xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromXScale="100%"
    android:toXScale="200%"
    android:fromYScale="100%"
    android:toYScale="200%"
    android:duration="2000"
    android:pivotX="0%"
    android:pivotY="0%"
    android:fillAfter="true">

</scale>

旋轉動畫

作用:使view具有旋轉的動畫效果

標籤:<rotate>

類:RotateAnimation

屬性

含義

值類型

fromDegrees

旋轉開始的角度

float

toDegrees

旋轉結束的角度

float

pivotX

旋轉的x軸軸點的座標

float

PivotY

旋轉的y軸軸點的座標

float

例子:

<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromDegrees="0"
    android:toDegrees="90"
    android:pivotX="0%"
    android:pivotY="0%"
    android:duration="2000"
    android:fillAfter="true">

</rotate>

透明度動畫

作用:使View改變透明度

標籤:<alpha>

類:AlphaAnimation

屬性

含義

值類型

fromAlpha

透明度的起始值,取值範圍0-1

float

toAlpha

透明度的結束值,取值範圍0-1

float

例子:

<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromAlpha="1"
    android:toAlpha="0"
    android:duration="2000"
    android:fillAfter="true">

</alpha>

動畫集合

作用:動畫的集合,其中可以包含多個動畫,也可以包括若干個動畫集合

標籤:<set>

類:AnimationSet

例子:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="2000"
    android:fillAfter="true">

    <translate
        android:fromXDelta="0"
        android:toXDelta="100%"
        android:fromYDelta="0"
        android:toYDelta="100%" />

    <alpha
        android:fromAlpha="1"
        android:toAlpha="0" />

    <rotate
        android:fromDegrees="0"
        android:toDegrees="90"
        android:pivotX="0%"
        android:pivotY="0%" />

    <scale
        android:fromXScale="100%"
        android:toXScale="200%"
        android:fromYScale="100%"
        android:toYScale="200%"
        android:pivotX="0%"
        android:pivotY="0%" />


</set>

動畫的使用

xml中定義的動畫

  1. 使用AnimationUtils加載動畫
Animation animation= AnimationUtils.loadAnimation(this,R.anim.anima_name);
  1. 需要使用動畫的view調用startAnimation方法開啓動畫
view.startAnimation(animation);

 

動畫狀態的監聽

通過對動畫設置setAnimationListener對動畫設置監聽

onAnimationStart:動畫開啓時
onAnimationEnd:動畫結束時
setAnimationListener:動畫重複時
animation.setAnimationListener(new Animation.AnimationListener() {
    @Override
    public void onAnimationStart(Animation animation) {

    }

    @Override
    public void onAnimationEnd(Animation animation) {

    }

    @Override
    public void onAnimationRepeat(Animation animation) {

    }
});


加入我的行列

微信公衆號


QQ羣:



 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章