日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

android 页面过渡动画,Activity过渡动画的实现方法

發(fā)布時(shí)間:2023/12/15 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android 页面过渡动画,Activity过渡动画的实现方法 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.使用overridePendingTransition方法實(shí)現(xiàn)Activity跳轉(zhuǎn)動(dòng)畫

overridePendingTransition方法是Activity中提供的Activity跳轉(zhuǎn)動(dòng)畫方法,通過該方法可以實(shí)現(xiàn)Activity跳轉(zhuǎn)時(shí)的動(dòng)畫效果,簡單例子如下:

Intent intent =newIntent(MainActivity.this, SecondActivity.class);

startActivity(intent);

overridePendingTransition(R.anim.slide_in_left, R.anim.slide_in_left);

注意:overridePendingTransition在startActivity或者是finish方法立刻執(zhí)行才有效

2、使用style的方式定義Activity的切換動(dòng)畫

(1)定義Application的style

Android:icon="@mipmap/ic_launcher"

Android:label="@string/app_name"

Android:supportsRtl="true"

Android:theme="@style/AppTheme">

(2)定義具體的AppTheme樣式其中這里的windowAnimationStyle就是我們定義Activity切換動(dòng)畫的style。而@anim/slide_in_top就是我們定義的動(dòng)畫文件,也就是說通過為Appliation設(shè)置style,然后為windowAnimationStyle設(shè)置動(dòng)畫文件就可以全局的為Activity的跳轉(zhuǎn)配置動(dòng)畫效果。

@color/colorPrimary

@color/colorPrimaryDark

@color/colorAccent

@style/activityAnim

@anim/slide_in_top

@anim/slide_in_top

而在windowAnimationStyle中存在四種動(dòng)畫:

activityOpenEnterAnimation 用于設(shè)置打開新的Activity并進(jìn)入新的Activity展示的動(dòng)畫

activityOpenExitAnimation 用于設(shè)置打開新的Activity并銷毀之前的Activity展示的動(dòng)畫

activityCloseEnterAnimation 用于設(shè)置關(guān)閉當(dāng)前Activity進(jìn)入上一個(gè)Activity展示的動(dòng)畫

activityCloseExitAnimation 用于設(shè)置關(guān)閉當(dāng)前Activity時(shí)展示的動(dòng)畫

3.使用ActivityOptions切換動(dòng)畫實(shí)現(xiàn)Activity跳轉(zhuǎn)動(dòng)畫

通過overridePendingTransition方法基本上可以滿足我們?nèi)粘V袑?duì)Activity跳轉(zhuǎn)動(dòng)畫的需求了,但MD風(fēng)格出來之后,overridePendingTransition這種老舊、生硬的方式怎么能適合我們的MD風(fēng)格的App呢?google在新的sdk中給我們提供了另外一種Activity的過度動(dòng)畫——ActivityOptions。并且提供了兼容包——ActivityOptionsCompat。ActivityOptionsCompat是一個(gè)靜態(tài)類,提供了相應(yīng)的Activity跳轉(zhuǎn)動(dòng)畫效果,通過其可以實(shí)現(xiàn)不少炫酷的動(dòng)畫效果。

(1)在跳轉(zhuǎn)的Activity中設(shè)置contentFeature

@Override protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

// 設(shè)置contentFeature,可使用切換動(dòng)畫

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執(zhí)行跳轉(zhuǎn)邏輯的時(shí)候調(diào)用startActivity的重寫方法,執(zhí)行ActivityOptions.makeSceneTransitionAnimation方法

/** * 點(diǎn)擊按鈕,實(shí)現(xiàn)Activity的跳轉(zhuǎn)操作 * 通過Android5.0及以上代碼的方式實(shí)現(xiàn)activity的跳轉(zhuǎn)動(dòng)畫 */

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跳轉(zhuǎn)動(dòng)畫效果

(四)使用ActivityOptions之后內(nèi)置的動(dòng)畫效果通過style的方式

這種方式其實(shí)就是通過style的方式展示和使用ActivityOptions過度動(dòng)畫,下面是實(shí)現(xiàn)通過定義style方式定義過度動(dòng)畫的步驟:

(1)編寫過度動(dòng)畫文件

首先我們需要在Application項(xiàng)目res目錄下新建一個(gè)transition目錄,然后創(chuàng)建資源文件,然后使用這些系統(tǒng)自帶的過渡動(dòng)畫效果,這里設(shè)置了過度時(shí)長為300ms。

(2)定義style文件

@color/colorPrimary

@color/colorPrimaryDark

@color/colorAccent

@transition/activity_explode

@transition/activity_explode

在Application的style文件中添加:

@transition/activity_explode

@transition/activity_explode

并指定過渡動(dòng)畫效果為我們剛剛定義的過渡動(dòng)畫文件。

(3)執(zhí)行跳轉(zhuǎn)邏輯點(diǎn)擊按鈕,實(shí)現(xiàn)Activity的跳轉(zhuǎn)操作 * 通過Android5.0及以上style的方式實(shí)現(xiàn)activity的跳轉(zhuǎn)動(dòng)畫

button4.setOnClickListener(new View.OnClickListener()

{ @Override public void onClick(View v) {

/** * 調(diào)用ActivityOptions.makeSceneTransitionAnimation實(shí)現(xiàn)過度動(dòng)畫 */

Intent intent = new Intent(MainActivity.this, FourActivity.class);

startActivity(intent, ActivityOptions.makeSceneTransitionAnimation(MainActivity.this).toBundle());

}

});

這樣執(zhí)行之后也可以展示出Activity跳轉(zhuǎn)過度動(dòng)畫了,其和通過代碼方式實(shí)現(xiàn)的效果是類似的,而且這種動(dòng)畫效果是全局的。

(五)使用ActivityOptions動(dòng)畫共享組件的方式實(shí)現(xiàn)跳轉(zhuǎn)Activity動(dòng)畫

這里的共享組件動(dòng)畫效果是指將前面一個(gè)Activity的某個(gè)子View與后面一個(gè)Activity的某個(gè)子View之間有過渡效果,即在這種過度效果下實(shí)現(xiàn)Activity的跳轉(zhuǎn)操作。那么如何實(shí)現(xiàn)兩個(gè)組件View之間實(shí)現(xiàn)過渡效果呢?

(1)定義共享組件在Activity a中的button按鈕點(diǎn)擊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="組件過度動(dòng)畫"

Android:background="@color/colorPrimary"

Android:transitionName="shareNames" />

在Activity b的布局文件中為組件定義transitionName屬性,這樣這兩個(gè)組件相當(dāng)于有了過度對(duì)應(yīng)關(guān)系,這里需要注意的是這兩個(gè)組件的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)調(diào)用startActivity執(zhí)行跳轉(zhuǎn)動(dòng)畫點(diǎn)擊按鈕,實(shí)現(xiàn)Activity的跳轉(zhuǎn)操作 * 通過Android5.0及以上共享組件的方式實(shí)現(xiàn)activity的跳轉(zhuǎn)動(dòng)畫

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()); }

}

);

需要說明的是這里調(diào)用的ActivityOptions.makeSceneTransitionAnimation方法,傳遞了三個(gè)參數(shù),其中第一個(gè)參數(shù)為context對(duì)象,第二個(gè)參數(shù)為啟動(dòng)Activity的共享組件,第三個(gè)參數(shù)為啟動(dòng)Activity的共享組件transitionName屬性值。這樣經(jīng)過調(diào)用之后我們就實(shí)現(xiàn)了從Activity a跳轉(zhuǎn)到Activity b的時(shí)候a中的組件到b中組件的過度效果。

這里寫圖片描述

過渡動(dòng)畫總結(jié)

overridePendingTransition方法從Android2.0開始,基本上能夠覆蓋我們activity跳轉(zhuǎn)動(dòng)畫的需求;

ActivityOptions API是在Android5.0開始的,可以實(shí)現(xiàn)一些炫酷的動(dòng)畫效果,更加符合MD風(fēng)格;

ActivityOptions還可以實(shí)現(xiàn)兩個(gè)Activity組件之間的過度動(dòng)畫;

總結(jié)

以上是生活随笔為你收集整理的android 页面过渡动画,Activity过渡动画的实现方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。