android中的動畫

學(xué)習(xí)筆記儡蔓,僅供自己參考郭蕉,如有不對歡迎指正

android中的動畫

(圖片使用來自網(wǎng)絡(luò),對圖片作者便是感謝喂江,如有任何問題召锈,通知會刪除)
Android 動畫可以歸納為以下幾種:

  • 補間動畫(View 動畫)
    使用場景:
    1.可以來做過度動畫比如popwindow的顯示隱藏
    2.activity的進入退出
    3.ViewGroup的進場動畫
    android:layoutAnimation="@anim/anim_layout",anim_layout 就是 ViewGroup 中子控件在第一次顯示時的進場動畫效果获询。
  • 幀動畫
    沒什么可說的
  • 屬性動畫

1. ValueAnimator:
只需要提供初始值和結(jié)束值涨岁,ValueAnimator會自動平滑的從完成起止的動畫效果拐袜。內(nèi)部使用一種時間循環(huán)的機制來計算值與值之間的動畫過渡
2. ObjectAnimator:
繼承自ValueAnimator,底層的動畫實現(xiàn)機制基于ValueAnimator梢薪。相對于ValueAnimator只能對view進行平滑的動畫過度蹬铺,ObjectAnimator可以對任意對象的任意屬性進行動畫操作,如View的alpha屬性秉撇。

val animator = ObjectAnimator.ofFloat(textview, "alpha", 1f, 0f, 1f)
animator.duration = 5000
animator.start()

3. Interpolator:控制動畫的變化速率
4. ViewPropertyAnimator:對View使用動畫提供的一種便捷機制
比如我們相對一個view執(zhí)行復(fù)雜的動畫集合甜攀,就可以如下調(diào)用

textview.animate().x(500).y(500).setDuration(5000)
        .setInterpolator(new BounceInterpolator());

不使用ViewPropertyAnimator,則需要自己去創(chuàng)建ObjectAnimator去實現(xiàn)

ObjectAnimator animator = ObjectAnimator.ofFloat(textview, "alpha", 0f);
animator.start();

  • 觸摸反饋動畫(Ripple Effect)
    觸摸時間會叫哥onTouchEvent來處理琐馆。膜拜大神:https://hencoder.com/ui-3-1/
    自定義觸摸反饋的關(guān)鍵:
    1.重寫 onTouchEvent()规阀,在里面寫上你的觸摸反饋算法,并返回 true(關(guān)鍵是 ACTION_DOWN 事件時返回 true)瘦麸。
    2.如果是會發(fā)生觸摸沖突的 ViewGroup谁撼,還需要重寫 onInterceptTouchEvent(),在事件流開始時返回 false瞎暑,并在確認(rèn)接管事件流時返回一次 true,以實現(xiàn)對事件的攔截与帆。
    3.當(dāng)子 View 臨時需要阻止父 View 攔截事件流時了赌,可以調(diào)用父 View 的 requestDisallowInterceptTouchEvent() ,通知父 View 在當(dāng)前事件流中不再嘗試通過 onInterceptTouchEvent() 來攔截玄糟。

  • 揭露動畫(Reveal Effect)
    使用場景:activity切換的view顯示隱藏

    image
    image
  • 轉(zhuǎn)場動畫 & 共享元素
    轉(zhuǎn)場動畫主要用在activity切換時
    共享元素主要在兩個切換的頁面有共同的元素勿她,重點兩個:
    1)transitionName是關(guān)鍵屬性
    2)延遲動畫postponeEnterTransition()結(jié)束頁面調(diào)用supportFinishAfterTransition()

    image
  • 視圖狀態(tài)動畫(Animate View State Changes)
    比如被點擊、選中等時候的動畫

    image
  • 矢量圖動畫(Vector 動畫)
    關(guān)于矢量圖可以參考:http://www.reibang.com/p/977147b8f3eb?utm_campaign
    1.矢量圖的優(yōu)缺點
    優(yōu)點:
    1.完美的適配性
    2.體積更小
    3.放大縮小阵翎,不失真
    缺點:
    1.5.0以下不支持
    2.不支持硬件加速,過于復(fù)雜的圖片加載效率低逢并,不建議
    2.矢量圖使用 drawable > 右鍵 > new > Vector Asset-local file(設(shè)計師給的圖)

    image
    image

矢量圖在布局文件中使用

<ImageView
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:scaleType="fitXY"
        app:srcCompat="@drawable/ic_clear_black_24dp"
        />

3.矢量動畫分為三種:
1.屬性變換,與補間動畫一樣
2.路徑繪制

<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="1000"
    android:interpolator="@android:interpolator/linear"
    android:propertyName="trimPathEnd"
    android:valueFrom="0"
    android:valueTo="1"
    android:valueType="floatType" />

image

3.路徑變換

<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
  android:duration="3000"
  android:propertyName="pathData"
  android:valueFrom="@string/path_begin"
  android:valueTo="@string/path_end"
  android:valueType="pathType"
  android:interpolator="@android:anim/accelerate_interpolator"/>

image
  • 約束布局實現(xiàn)的關(guān)鍵幀動畫(ConstraintSet 動畫)
    關(guān)鍵:指定動畫指定開頭和結(jié)尾的兩個關(guān)鍵幀
    比如改變一個view的大小郭卫、間距砍聊、透明度等等。會真正改變view的狀態(tài)贰军,比如將view長度變?yōu)?玻蝌,它原來的位置點擊將無效。示例代碼
private var mConstraintSet2: ConstraintSet? = null
    private var mConstraintSet1: ConstraintSet? = null

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main2)

        val mConstraintLayout = findViewById<ConstraintLayout>(R.id.mConstraintLayout)
        mConstraintSet2 = ConstraintSet()
        mConstraintSet1 = ConstraintSet()
        mConstraintSet2?.clone(mConstraintLayout)
        mConstraintSet1?.clone(mConstraintLayout)

        findViewById<Button>(R.id.jumpBt).setOnClickListener {
            TransitionManager.beginDelayedTransition(mConstraintLayout);
            mConstraintSet2?.constrainWidth(R.id.tv02,0)
            mConstraintSet2?.applyTo(mConstraintLayout)
        }

        findViewById<Button>(R.id.jumpBt2).setOnClickListener {
            TransitionManager.beginDelayedTransition(mConstraintLayout);
            mConstraintSet1?.applyTo(mConstraintLayout);
        }
    }

參考文章:https://mp.weixin.qq.com/s/Xk_dEG3tEMS-Cqd5fd-56Q

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末词疼,一起剝皮案震驚了整個濱河市俯树,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌贰盗,老刑警劉巖许饿,帶你破解...
    沈念sama閱讀 216,744評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異舵盈,居然都是意外死亡陋率,警方通過查閱死者的電腦和手機球化,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,505評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來翘贮,“玉大人赊窥,你說我怎么就攤上這事±暌常” “怎么了锨能?”我有些...
    開封第一講書人閱讀 163,105評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長芍耘。 經(jīng)常有香客問我址遇,道長,這世上最難降的妖魔是什么斋竞? 我笑而不...
    開封第一講書人閱讀 58,242評論 1 292
  • 正文 為了忘掉前任倔约,我火速辦了婚禮,結(jié)果婚禮上坝初,老公的妹妹穿的比我還像新娘浸剩。我一直安慰自己,他們只是感情好鳄袍,可當(dāng)我...
    茶點故事閱讀 67,269評論 6 389
  • 文/花漫 我一把揭開白布绢要。 她就那樣靜靜地躺著,像睡著了一般拗小。 火紅的嫁衣襯著肌膚如雪重罪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,215評論 1 299
  • 那天哀九,我揣著相機與錄音剿配,去河邊找鬼。 笑死阅束,一個胖子當(dāng)著我的面吹牛呼胚,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播息裸,決...
    沈念sama閱讀 40,096評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼砸讳,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了界牡?” 一聲冷哼從身側(cè)響起簿寂,我...
    開封第一講書人閱讀 38,939評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎宿亡,沒想到半個月后常遂,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,354評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡挽荠,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,573評論 2 333
  • 正文 我和宋清朗相戀三年克胳,在試婚紗的時候發(fā)現(xiàn)自己被綠了平绩。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,745評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡漠另,死狀恐怖捏雌,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情笆搓,我是刑警寧澤性湿,帶...
    沈念sama閱讀 35,448評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站满败,受9級特大地震影響肤频,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜算墨,卻給世界環(huán)境...
    茶點故事閱讀 41,048評論 3 327
  • 文/蒙蒙 一宵荒、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧净嘀,春花似錦报咳、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,683評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至熬苍,卻和暖如春稍走,著一層夾襖步出監(jiān)牢的瞬間袁翁,已是汗流浹背柴底。 一陣腳步聲響...
    開封第一講書人閱讀 32,838評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留粱胜,地道東北人柄驻。 一個月前我還...
    沈念sama閱讀 47,776評論 2 369
  • 正文 我出身青樓,卻偏偏與公主長得像焙压,于是被迫代替她去往敵國和親鸿脓。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,652評論 2 354

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

  • 1:逐幀動畫 在res/drawable目錄下新建動畫XML文件涯曲,如下所示 設(shè)置背景野哭,如下: 在java文件中啟動...
    名字_都被占了閱讀 471評論 0 0
  • Android中動畫分為:View動畫、幀動畫(也屬于View動畫)幻件、屬性動畫拨黔。View動畫是對View做圖形變換...
    胡飛洋閱讀 687評論 1 1
  • 文章主要內(nèi)容來源《Android開發(fā)藝術(shù)探索》,部分內(nèi)容來源網(wǎng)上的文章绰沥,文中會有鏈接篱蝇。 Android系統(tǒng)提供了兩...
    developerzjy閱讀 1,755評論 0 5
  • 動畫可以分為三類:View動畫贺待,幀動畫,屬性動畫零截。 一麸塞、View動畫 1.View動畫包括四種:平移動畫,縮放動畫...
    銅角大王閱讀 219評論 0 0
  • Android中的動畫主要有幀動畫涧衙、補間動畫哪工、屬性動畫(3.0之后出現(xiàn)),此處按照官方將其分為兩大類記錄绍撞。他們之間...
    KwokKwok閱讀 330評論 0 1