1. 程式人生 > >Android動畫--Activity過渡動畫 Transition

Android動畫--Activity過渡動畫 Transition

內容變換

在android 5.0之後我們可以使用google提供的Transition框架來實現Activity之間或者Fragment的動畫變換效果。
雖然在之前的版本中,我們可以使用Activity的overridePendingTransition()和Fragment的setCustomAnimation()來實現Activity或者Fragment之間的動畫切換,但是他們僅僅是將整個頁面一起進行動畫變換,顯得比較生硬,而通過Transition,我們可以實現當第二個介面的出現方式與第一個介面有一定的關聯性,例如視覺上讓兩個介面共享同一個元素,或者第二個介面動畫開始的位置基於我們在第一個頁面時候設定的值等等。

當我們需要使用Transition進行Activity之間的動畫變換時,首先需要設定:

        //設定允許通過ActivityOptions.makeSceneTransitionAnimation傳送或者接收Bundle
        getWindow().requestFeature(Window.FEATURE_ACTIVITY_TRANSITIONS);
        //設定使用TransitionManager進行動畫,不設定的話系統會使用一個預設的TransitionManager
        getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);

Transition主要有退出(exit),進入(enter),返回(return),再次進入(reenter)四種變換,我們可以通過getWindow()然後進行設定,如下所示:

        getWindow().setExitTransition(new Fade());
        getWindow().setReenterTransition(new Explode());
        getWindow().setEnterTransition(new Slide());
        getWindow().setReturnTransition(new
Fade());

假設我們通過ActivityA啟動ActivityB,則這四種變化分別是指 :

1.ActivityA的退出變換(ExitTransition)決定了A呼叫B的時候,A中的View是如何播放動畫的;
2.ActivityB的進入變換(EnterTransition)決定了A呼叫B的時候,B中的View是如何播放動畫的;
3.ActivityB的返回變換(ReturnTransition)決定了在B返回A的時候,B中的View是如何播放動畫的;
4.ActivityA的再次進入變換(ReenterTransition)決定了在B返回A的時候,A中的View是如何播放動畫的。

然後我們可以在不同的狀態變化中通過設定不同的效果,包括Fade(淡出),Explode(分解),以及Slide(滑動);

如果我們沒有對Activity設定進入或這退出動畫,但是如果開啟了Transition框架,則系統會預設為其設定Fade動畫效果,如果設定了進入或退出,但是沒有設定返回或者再次進入,則返回變換會使用設定的進入變換效果,再次進入會使用其退出的變換效果。

使用的時候通過如下程式碼進行變換的開始:

        Intent intent = new Intent(MainActivityA.this, MainActivityB.class);
        ActivityOptions option = ActivityOptions.makeSceneTransitionAnimation(MainActivityA.this);
        startActivity(intent, option.toBundle());

這樣執行程式就能看到頁面內容變換的動畫了。

共享元素變換

Transition框架不僅可以實現在內容變換時的動畫效果,同時還可以設定在兩個介面中的共享元素變換。

在程式中使用共享元素的動畫效果非常簡單,只需要分別為兩個需要共享的元素設定相同的transitionName,並在ActivityOptions.makeSceneTransitionAnimation中將需要共享的元素作為引數傳遞過去即可。

例如我們需要共享ActivityA和ActivityB中的兩個Image圖片,則只需要分別為兩個Image在佈局檔案中設定相同的transitionName:

        android:transitionName="share_image"

需要注意兩個transitionName一定要命名相同,這樣系統才能找到共享元素。

如果我們只需要設定一個共享元素,那麼在ActivityA中使用如下程式碼進行跳轉:

        Intent intent = new Intent(MainActivityA.this, MainActivityB.class);
        ActivityOptions option = ActivityOptions
                .makeSceneTransitionAnimation(MainActivityA.this,imageView,"share_image");
        startActivity(intent, option.toBundle());

我們發現和之前內容變換使用的是相同的方法,只是在引數上多了共享的view和共享的變換名稱,即之前設定的transitionName;

如果我們需要多個共享的元素,可以通過Pair.create()進行建立,如下所示:

        ActivityOptions option = ActivityOptions.makeSceneTransitionAnimation(MainActivityA.this,
                Pair.create(imageView, "share_image"),
                Pair.create(button, "share_button"));

需要注意的是Pair.create()中的兩個引數,第一個引數為需要共享的View,第二個引數為共享的名稱,即各自的transitionName;在使用的時候發現對於不同的view如Button,ImageView都需要將其強轉為View,才能作為Pair.create()的第一個引數。

相關推薦

Android動畫--Activity過渡動畫 Transition

內容變換 在android 5.0之後我們可以使用google提供的Transition框架來實現Activity之間或者Fragment的動畫變換效果。 雖然在之前的版本中,我們可以使用Activity的overridePendingTransiti

Android 5.X Activity過渡動畫,以及漂亮的共享元素效果

曾經的Android在Activity進行跳轉的時候,只是非常生硬的進行切換,即使使用overPendingtransition(int inId,int outId)這個方法來給Activity增加一些切換動畫效果也很是差強人意。而在Android 5.X中,

Android 5.0學習之Activity過渡動畫

前言 Activity Transition: 提供了三種Transition型別: 進入:一個進入的過渡(動畫)決定activity中的所有的檢視怎麼進入螢幕。退出:一個退出的過渡(動畫)決定一個activity中的所有檢視怎麼退出螢幕。 共享元素:一個共享元素

android基礎--Activity之間動畫

這個工程裡面收集了一些常用的動畫檔案在工程目錄anim下(都加了註釋,大家可以直接用),至於動畫標籤裡面的屬性大家可以參考如下路徑的官方文件:太全了,有些還可以直接使用的... developers/Dev Guide/Application Resources/Resources Type/A

Android5.0:Activity過渡動畫

Android 在5.0(API 級別 21)中提供了三種Transition 型別 進入:一個進入的過渡動畫決定Activity中的所有的檢視怎麼進入螢幕 退出:一個退出的過渡動畫決定一個Activity中的所有檢視怎麼退出螢幕 共享元素:一個共享因素過渡動畫決定兩個Activitie

(android:windowIsTranslucent)影響(android:windowAnimationStyle)Activity切換動畫無效

近沒事的時候仿寫Google+的佈局,遇到了一個問題,想要一個類似網易新聞向左滑動Activity介面可以finish掉Activity,由於向左滑動時,左面會出現黑屏,不好看, 所以在樣式中添加了 <item name="android:windowIsTransl

Android TransitionDrawable:過渡動畫Drawable

Android TransitionDrawable實現一種可以用動畫表示的Drawable。寫一個例子。package zhangphil.app; import android.graphics.Color; import android.graphics.drawab

Android5.0Activity的轉場動畫過渡動畫、過場動畫、跳轉動畫

Activity的轉場動畫很早就有,但是太過於單調,樣式也不好看,於是Google在Android5.0之後,又推出的新的轉場動畫,效果還是非常炫的,今天我們一起來看一下。 Android5.0之後Activity的出入場動畫總體上來說可以分為兩種,一種就是分

TransitionActivity過渡、共享元素動畫

本文原專案地址為:https://github.com/lgvalle/Material-Animations 在文章最後,有我自己對著這個專案手敲的一份。 程式碼基本一模一樣,只有略微的修改,加了一些註釋,以及將其中大多數英文翻譯成了中文。 此篇 API 均為 Android 5.0(AP

Android過渡動畫Transition Animation)

本篇部落格記錄一下Android中過渡動畫的用法。 過渡動畫是Android 4.4引入的新的動畫框架,它本質上仍是屬性動畫, 但對屬性動畫做了一層封裝,以方便開發者實現Activity或者View的過渡動畫效果。 和屬性動畫相比,過渡動畫最大的不同是需要

android 動畫 過渡動畫 transition

Transition過渡動畫 引入 從API 1就存在的Drawable Animation和View Animation,以及API 11(Android 3.0)以後加入的Property Animation。而過渡動畫Transition是在API 19(Andro

Android 5.0學習之Activity共享元素過渡動畫

轉自:http://blog.csdn.net/ljx19900116/article/details/41806889 前言 Activity Transition: 提供了三種Transition型別: 進入:一個進入的過渡(動畫)決定activity中的

Android Studio之Activity切換動畫(三)

文章 oid out size ref intel tar studio anim 1、上一篇文章“Android Studio之多個Activity的滑動切換(二)”中實現了多個activity之間的滑動切換,可是新切換出的activity大多是從右側進入 2、我們能

AndroidActivity螢幕切換動畫左右滑動切換

在Android開發過程中,經常會碰到Activity之間的切換效果的問題,下面介紹一下如何實現左右滑動的切換效果,首先了解一下Activity切換的實現,從Android2.0開始在Activity增加了一個方法: public void overridePendingT

Vue學習之路(七)---transition過渡動畫

vue中過度動畫v-if和v-show都可以使用,首先要明白四個狀態,v-enter(剛開始進入) ,v-enter-active(進入過程中到進入完畢),v-leave-enter(剛開始離開),v-leave-enter-active(離開過程中到離開),示例圖如下 好的,弄

Android實現過渡動畫、引導頁 Android判斷是否第一次啟動App

最近參加比賽聯絡模擬題其中有一道題是: 結合上學期期末實訓整理的資料,加上網上博主的博文參考。再次整理一遍,以供以後參考。 這篇是基於Android自身的控制元件View做出的效果。 文章最後附上利用RXJAVA技術做成的引導頁。 首先是過渡動畫,因為它不論App是否第一次啟動都會顯

css3——transition動畫過渡transition動畫過渡可作用的屬性),animation動畫鋪墊和@keyframes動畫關鍵幀

css3動畫優點:開啟GPU加速,不會產生動畫佇列,即頻繁點選按鈕時,不會有多個動畫在等待執行; 1. transition: property duration timing-function delay; 是個複合屬性,包括: transition-property

CSS3變形和動畫:旋轉、扭曲、縮放、位移、矩陣 、原點 transform-origin、過渡屬性 transition-property、過渡所需時間 transition-duration...

旋轉、扭曲、縮放、位移、矩陣 、原點 transform-origin、過渡屬性 transition-property、過渡所需時間 transition-duration、過渡函式 transition-timing-function、過渡延遲時間 transition-

Vue:關於transition-group過渡動畫,別再踩這個坑了!

使用transition-group踩到的坑 按照vue的文件和UI圖開開心心的噼裡啪啦的敲程式碼: <transition-group class="ys-notices" tag="ul" enter-active-class="animated bounceInL

Android實現Activity介面進入動畫

下面介紹的是實現右進右出 一、在res下新建一個anim資料夾(有了就不用新建了) 1、新建in_from_right.xml <?xml version="1.0" encoding="utf-8"?> <translate xmlns:andr