關(guān)于設(shè)置 android:parentActivityName 后過渡動(dòng)畫的問題

首先,先簡單介紹一下?android:parentActivityName 。

安卓開發(fā)文檔中如此解釋:Activity 邏輯父項(xiàng)的類名稱。此處的名稱必須與為相應(yīng)?<activity>?元素的?android:name?屬性指定的類名稱一致。系統(tǒng)會(huì)讀取該屬性,以確定當(dāng)用戶按下操作欄中的“向上”按鈕時(shí)應(yīng)該啟動(dòng)哪一個(gè) Activity。 系統(tǒng)還可以利用這些信息通過?TaskStackBuilder?合成 Activity 的返回棧。要支持 API 級(jí)別 4 - 16,您還可以使用為?"android.support.PARENT_ACTIVITY"?指定值的?<meta-data>?元素來聲明父 Activity。??

簡單來說就是在當(dāng)前 Activity 的標(biāo)題欄左上角加一個(gè)返回按鈕,點(diǎn)擊后自動(dòng)返回設(shè)置的 Activity?而不是回到之前的 Task。

比如為 TestActivity?設(shè)置:

<activity android:name=".TestActivity"

? ? android:parentActivityName=".MainActivity"/>

則點(diǎn)擊左上角的返回圖標(biāo)后將自動(dòng)回到 MainActivity。

關(guān)于 android:parentActivityName?詳見官方文檔



然而,在設(shè)置該屬性后我發(fā)現(xiàn)系統(tǒng)在 Activity?切換時(shí)的過渡動(dòng)畫似乎有點(diǎn)不對(duì)勁。

首先看圖:

過渡動(dòng)畫

為了更好的演示切換時(shí)的過渡動(dòng)畫,我把?過渡動(dòng)畫縮放 設(shè)置為了 5X 。?

可以看到,正常的進(jìn)入 Activity?應(yīng)該是新 Activity?從右往左進(jìn)入并逐漸覆蓋當(dāng)前Activity。

點(diǎn)擊返回后應(yīng)該是當(dāng)前 Activity?從左往右退出,并逐漸顯露出上層 Activity。

例如:圖中的點(diǎn)擊進(jìn)入 設(shè)置界面 和退出 設(shè)置界面。

但是,通過在 AndroidManifest?中為 Activity?添加?android:parentActivityName?的方法來返回上層時(shí)卻是上層 Activity 從右往左進(jìn)入并覆蓋當(dāng)前 Activity,而非正常的當(dāng)前 Activity?從左往右退出。

例如:圖中點(diǎn)擊進(jìn)入 關(guān)于界面?后退出。

通過以上分析不難得出結(jié)論,使用?android:parentActivityName?并非是?finish?當(dāng)前 Activity?后返回上層,而是新建一個(gè)上層 Activity?來覆蓋當(dāng)前 Activity。

查詢資料得知

DisplayMessageActivity為子Activity,而MainActivity為父Activity,點(diǎn)擊 DisplayMessageActivity的左上角返回按鈕的時(shí)候,調(diào)用邏輯如下:

MainActivity.onDestroy()

MainActivity.onCreate(null)

MainActivity.onStart()?

所以系統(tǒng)在的過渡動(dòng)畫給出的是進(jìn)入 Activity?的動(dòng)畫而非退出動(dòng)畫,怪不得總覺得看起來怪怪的。

我個(gè)人的解決方案是手動(dòng)設(shè)置?Toolbar,并添加返回按鈕:

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);

setSupportActionBar(toolbar);

getSupportActionBar().setDisplayHomeAsUpEnabled(true);

然后繼承?onOptionsItemSelected ,當(dāng)點(diǎn)擊?返回?按鈕時(shí)手動(dòng)?finish :

if (id ==android.R.id.home) {

finish();

}

這樣雖然麻煩了點(diǎn),但至少動(dòng)畫看起來順眼了點(diǎn)......

如果各位大佬還有更好的方法歡迎指教~


PS:我沒有刻意去設(shè)置切換 Activity?的動(dòng)畫,都是用的系統(tǒng)默認(rèn)的過渡動(dòng)畫,所以可能不同的 ROM?動(dòng)畫效果不一樣(比如我截圖中的 MIUI 是左右滑出滑入,我使用原生安卓測(cè)試是上下滑出滑入),但實(shí)質(zhì)都是一樣的。

PPS:寫完才發(fā)現(xiàn)原來文檔里用的本來就是 “啟動(dòng)”?而非 “返回” Activity......所以說,就因?yàn)闆]好好看文檔折騰了這么久......

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 用兩張圖告訴你,為什么你的 App 會(huì)卡頓? - Android - 掘金 Cover 有什么料? 從這篇文章中你...
    hw1212閱讀 14,007評(píng)論 2 59
  • 內(nèi)容抽屜菜單ListViewWebViewSwitchButton按鈕點(diǎn)贊按鈕進(jìn)度條TabLayout圖標(biāo)下拉刷新...
    皇小弟閱讀 47,162評(píng)論 22 665
  • 內(nèi)容 抽屜菜單 ListView WebView SwitchButton 按鈕 點(diǎn)贊按鈕 進(jìn)度條 TabLayo...
    小狼W閱讀 1,671評(píng)論 0 10
  • ¥開啟¥ 【iAPP實(shí)現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個(gè)線程,因...
    小菜c閱讀 7,335評(píng)論 0 17
  • 你依偎在我懷的時(shí)候, 是我最幸福的時(shí)候。 你是我的港灣, 你是我的空氣。 生命有你守候, 因此變得富有。
    b0f996ec2d14閱讀 167評(píng)論 0 0

友情鏈接更多精彩內(nèi)容