android 页面过渡动画,Activity过渡动画的实现方法
1.使用overridePendingTransition方法實現Activity跳轉動畫
overridePendingTransition方法是Activity中提供的Activity跳轉動畫方法,通過該方法可以實現Activity跳轉時的動畫效果,簡單例子如下:
Intent intent =newIntent(MainActivity.this, SecondActivity.class);
startActivity(intent);
overridePendingTransition(R.anim.slide_in_left, R.anim.slide_in_left);
注意:overridePendingTransition在startActivity或者是finish方法立刻執行才有效
2、使用style的方式定義Activity的切換動畫
(1)定義Application的style
Android:icon="@mipmap/ic_launcher"
Android:label="@string/app_name"
Android:supportsRtl="true"
Android:theme="@style/AppTheme">
(2)定義具體的AppTheme樣式其中這里的windowAnimationStyle就是我們定義Activity切換動畫的style。而@anim/slide_in_top就是我們定義的動畫文件,也就是說通過為Appliation設置style,然后為windowAnimationStyle設置動畫文件就可以全局的為Activity的跳轉配置動畫效果。
@color/colorPrimary
@color/colorPrimaryDark
@color/colorAccent
@style/activityAnim
@anim/slide_in_top
@anim/slide_in_top
而在windowAnimationStyle中存在四種動畫:
activityOpenEnterAnimation 用于設置打開新的Activity并進入新的Activity展示的動畫
activityOpenExitAnimation 用于設置打開新的Activity并銷毀之前的Activity展示的動畫
activityCloseEnterAnimation 用于設置關閉當前Activity進入上一個Activity展示的動畫
activityCloseExitAnimation 用于設置關閉當前Activity時展示的動畫
3.使用ActivityOptions切換動畫實現Activity跳轉動畫
通過overridePendingTransition方法基本上可以滿足我們日常中對Activity跳轉動畫的需求了,但MD風格出來之后,overridePendingTransition這種老舊、生硬的方式怎么能適合我們的MD風格的App呢?google在新的sdk中給我們提供了另外一種Activity的過度動畫——ActivityOptions。并且提供了兼容包——ActivityOptionsCompat。ActivityOptionsCompat是一個靜態類,提供了相應的Activity跳轉動畫效果,通過其可以實現不少炫酷的動畫效果。
(1)在跳轉的Activity中設置contentFeature
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 設置contentFeature,可使用切換動畫
getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);
Transition explode = TransitionInflater.from(this).inflateTransition(Android.R.transition.explode);
getWindow().setEnterTransition(explode);
setContentView(R.layout.activity_three);
}
(2)在startActivity執行跳轉邏輯的時候調用startActivity的重寫方法,執行ActivityOptions.makeSceneTransitionAnimation方法
/** * 點擊按鈕,實現Activity的跳轉操作 * 通過Android5.0及以上代碼的方式實現activity的跳轉動畫 */
button3.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, ThreeActivity.class);
startActivity(intent, ActivityOptions.makeSceneTransitionAnimation(MainActivity.this).toBundle());
}
});
activity跳轉動畫效果
(四)使用ActivityOptions之后內置的動畫效果通過style的方式
這種方式其實就是通過style的方式展示和使用ActivityOptions過度動畫,下面是實現通過定義style方式定義過度動畫的步驟:
(1)編寫過度動畫文件
首先我們需要在Application項目res目錄下新建一個transition目錄,然后創建資源文件,然后使用這些系統自帶的過渡動畫效果,這里設置了過度時長為300ms。
(2)定義style文件
@color/colorPrimary
@color/colorPrimaryDark
@color/colorAccent
@transition/activity_explode
@transition/activity_explode
在Application的style文件中添加:
@transition/activity_explode
@transition/activity_explode
并指定過渡動畫效果為我們剛剛定義的過渡動畫文件。
(3)執行跳轉邏輯點擊按鈕,實現Activity的跳轉操作 * 通過Android5.0及以上style的方式實現activity的跳轉動畫
button4.setOnClickListener(new View.OnClickListener()
{ @Override public void onClick(View v) {
/** * 調用ActivityOptions.makeSceneTransitionAnimation實現過度動畫 */
Intent intent = new Intent(MainActivity.this, FourActivity.class);
startActivity(intent, ActivityOptions.makeSceneTransitionAnimation(MainActivity.this).toBundle());
}
});
這樣執行之后也可以展示出Activity跳轉過度動畫了,其和通過代碼方式實現的效果是類似的,而且這種動畫效果是全局的。
(五)使用ActivityOptions動畫共享組件的方式實現跳轉Activity動畫
這里的共享組件動畫效果是指將前面一個Activity的某個子View與后面一個Activity的某個子View之間有過渡效果,即在這種過度效果下實現Activity的跳轉操作。那么如何實現兩個組件View之間實現過渡效果呢?
(1)定義共享組件在Activity a中的button按鈕點擊transitionName屬性:
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:layout_below="@+id/button4"
Android:layout_marginTop="10dp"
Android:layout_marginRight="10dp"
Android:layout_marginLeft="10dp" Android:text="組件過度動畫"
Android:background="@color/colorPrimary"
Android:transitionName="shareNames" />
在Activity b的布局文件中為組件定義transitionName屬性,這樣這兩個組件相當于有了過度對應關系,這里需要注意的是這兩個組件的transitionName屬性的值必須是相同的。
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:id="@+id/activity_second"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:gravity="center_horizontal" Android:orientation="vertical"
Android:transitionName="shareNames" >
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:background="@color/colorAccent"
Android:layout_marginTop="10dp"
Android:layout_marginBottom="10dp" />
(2)調用startActivity執行跳轉動畫點擊按鈕,實現Activity的跳轉操作 * 通過Android5.0及以上共享組件的方式實現activity的跳轉動畫
button5.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, FiveActivity.class);
startActivity(intent,
ActivityOptions.makeSceneTransitionAnimation(MainActivity.this, button5, "shareNames").toBundle()); }
}
);
需要說明的是這里調用的ActivityOptions.makeSceneTransitionAnimation方法,傳遞了三個參數,其中第一個參數為context對象,第二個參數為啟動Activity的共享組件,第三個參數為啟動Activity的共享組件transitionName屬性值。這樣經過調用之后我們就實現了從Activity a跳轉到Activity b的時候a中的組件到b中組件的過度效果。
這里寫圖片描述
過渡動畫總結
overridePendingTransition方法從Android2.0開始,基本上能夠覆蓋我們activity跳轉動畫的需求;
ActivityOptions API是在Android5.0開始的,可以實現一些炫酷的動畫效果,更加符合MD風格;
ActivityOptions還可以實現兩個Activity組件之間的過度動畫;
總結
以上是生活随笔為你收集整理的android 页面过渡动画,Activity过渡动画的实现方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何在Google浏览器中批量下载网页上
- 下一篇: dnf真土罐礼盒获取方法有哪些 真土罐礼