Android開發藝術探索筆記 第七章 動畫深入分析

android動畫分爲三種 View動畫 幀動畫  屬性動畫  其中幀動畫也屬於View動畫 不過和常見的View旋轉、平移、縮放、透明度的表現形式不同

7.1.1View動畫的種類

è¿éåå¾çæè¿°

使用View動畫首先需要創建xml文件這個文件的路徑爲res/anim/filename.xml ,描述文件有固定的語法

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


    <alpha
        android:fromAlpha="10.0"
        android:toAlpha="10.0" />

    <scale
        android:fromXScale="10dp"
        android:fromYScale="10dp"
        android:pivotX="10"
        android:pivotY="10"
        android:toXScale="10dp"
        android:toYScale="10dp" />

    <translate
        android:fromXDelta="10"
        android:fromYDelta="10"
        android:toXDelta="10"
        android:toYDelta="10" />

    <rotate
        android:fromDegrees="10"
        android:pivotX="10"
        android:pivotY="10"
        android:toDegrees="10" />

</set>

從上邊的語法來看,View的動畫既可以是單個動畫也可以由一系列的動畫組成

<set>標籤表示動畫集合,對應AnimationSet類它包含很多個類有兩個屬性:

android:interpolator :表示動畫集合所使用的差值器,差值器影響動畫的速度,比如非勻速動畫就需要差值器來製作動畫的過程,這個屬性可以不指定,默認爲加速減速差值器

android:shareInterpolator:表示集合中的動畫是否合計和使用一個差值器,如果集合不指定差值器,那麼子動畫就需要單獨的指定所需要的差值器了

< translate>標籤表示平移動畫:

  • android:fromXDelta

表示x的起始值,比如0

  • android:fromYDelta

表示y的結束值,比如100

  • android:toXDelta

表示y的起始值

  • android:toYDelta

表示y的結束值

< scale>標籤表示的是縮放動畫

android:fromXScale
水平方向縮放的起始值,比如0.5

android:fromYScale
豎直方向縮放的起始值

android:pivotX
縮放軸點的x座標,它會影響縮放的效果

android:pivotY
縮放軸點的y座標,它會影響縮放的效果

android:toXScale
水平方向縮放的結束值,比如1.2

android:toYScale
豎直方向縮放的起始值
 

<routate>表示動畫的旋轉,對應RotateAnimation,它可以使View具有旋轉的動畫效果

android:fromDegrees
旋轉開始的角度,比如0

android:toDegrees
旋轉結束的角度,比如180

android:pivotX
旋轉軸點的x

android:pivotY
旋轉軸點的y

在旋轉中也有軸的概念,他也會影響到旋轉的效果,軸點扮演者旋轉軸的角色,view圍繞着軸點進行旋轉,默認情況下在view的中心,考慮到一種情況,view圍繞自己的中心,和圍繞左上角進行90度顯然是不同的軌跡

< alpha>表示透明動畫。對應的AlphaAnimation

  • android:fromAlpha

表示透明度的起始值,比如0.1

  • android:toAlpha

上面都只是很簡單的介紹了XM格式,具體的使用方法還是看文檔,我們還有一些常用的屬性如下

  • android:duration

動畫的時間

  • android:fillAfter

動畫結束之後是否停留在結束的位置

除了在xml中創建動畫 還可以通過代碼實現 但是對於View動畫來說建議採用XML來定義動畫,這是因爲XML的可讀性更好,淡然在實際開發中使用xml也是第一選擇

 

7.1.2自定義View動畫

除了系統提供的四種View動畫外,我們還可以自定義View動畫自定義動畫,在實際開發過程中基本上用不到

7.1.3幀動畫

幀動畫就是順序播放的一組圖片,系統提供了一個AnimationDrawable類來實現幀動畫

在xml中定義

7.2View動畫的使用場景

view動畫還可以在一些特殊的場景使用 比如在ViewGroup中可以控制子元素的出場效果,實現不同activity之間的切換效果

7.2.1 LayoutAnimation 作用於ViewGroup爲ViewGroup制定一個動畫這樣他的子元素出場的時候就具有這種動畫了,這種效果常被用於listview中

7.2.2 Activity的切換效果 

啓動一個

startActivity(new Intent(MainActivity.this,OneActivity.class));
//這是activity的跳轉動畫
overridePendingTransition(R.anim.animation,R.anim.anim_layout);

退出一個

@Override
    public void onBackPressed() {
        super.onBackPressed();
        overridePendingTransition(R.anim.animation, R.anim.anim_layout);
    }

7.3屬性動畫

屬性動畫可以對任何隊形做動畫們甚至沒有對象也可以,屬性動畫效果得到加強,不再像View動畫支持4種屬性動畫有ValueAnimator,ObjectAnimator,AnimatorSet; ObjectAnimator繼承自ValueAnimator,而AnimatorSet可以定義一組動畫

屬性動畫可以對任意對象的屬性進行動畫,而不僅僅是View 動畫的默認時間是300 默認幀率是10

7.3.1使用屬性動畫

 

 

 

 

 

 

 

 

 

 

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