一般啟動(dòng)一個(gè)新的Activity都默認(rèn)有切換的動(dòng)畫效果,比如界面從右至左的移動(dòng)。
但是有些時(shí)候我們不需要這個(gè)動(dòng)畫,怎么辦?
操作方法比較麻煩,這里我推薦其中一種。我這里是要做啟動(dòng)頁(yè)splash到首頁(yè)Home無(wú)縫展示,即啟動(dòng)頁(yè)的圖片背景和首頁(yè)最上層的懸浮背景圖是一模一樣,用戶會(huì)以為還在啟動(dòng)頁(yè),我這里會(huì)做些動(dòng)畫,然后進(jìn)行開門效果。(首頁(yè)會(huì)多出2個(gè)按鈕,此時(shí)就不是啟動(dòng)頁(yè)了)
主要實(shí)現(xiàn)思路:
1、需要設(shè)置無(wú)動(dòng)畫效果的主題,應(yīng)用到對(duì)應(yīng)的界面。
2、在啟動(dòng)頁(yè)面界面結(jié)束時(shí),需要增加一個(gè)方法 overridePendingTransition(0, 0);
在SplashActivity.this.finish();之前。
3、gif中啟動(dòng)頁(yè)面和首頁(yè)都是同一個(gè)圖片(首頁(yè)布局上面懸浮了啟動(dòng)頁(yè)的圖片,利用window的decorview)
4、在style.xml里,需要加入下面主題,其中parent=”AppTheme”中的父主題是你應(yīng)用自身的主題,name=”Theme”的theme是即將需要使用的。接下來(lái)在首頁(yè)的Android:theme=”@style/Theme”設(shè)置到你的首頁(yè)(即你啟動(dòng)頁(yè)跳轉(zhuǎn)的下一級(jí)頁(yè)面)。
<!-- 取消界面轉(zhuǎn)場(chǎng)動(dòng)畫使用--> <style name="Theme" parent="AppTheme"> <item name="android:windowAnimationStyle">@style/Animation</item> </style> <style name="Animation"> <item name="android:activityOpenEnterAnimation">@null</item> <item name="android:activityOpenExitAnimation">@null</item> <item name="android:activityCloseEnterAnimation">@null</item> <item name="android:activityCloseExitAnimation">@null</item> <item name="android:taskOpenEnterAnimation">@null</item> <item name="android:taskOpenExitAnimation">@null</item> <item name="android:taskCloseEnterAnimation">@null</item> <item name="android:taskCloseExitAnimation">@null</item> <item name="android:taskToFrontEnterAnimation">@null</item> <item name="android:taskToFrontExitAnimation">@null</item> <item name="android:taskToBackEnterAnimation">@null</item> <item name="android:taskToBackExitAnimation">@null</item> </style>
5、如果需要實(shí)現(xiàn)gif中效果,防止啟動(dòng)頁(yè)的圖片可能延伸到狀態(tài)欄,我這邊加了占位布局(高度為動(dòng)態(tài)獲取的系統(tǒng)狀態(tài)欄高度,代碼是在啟動(dòng)頁(yè)獲取高度)。
@Override public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); int statusBarHeight = getStatusBarHeight(); PreferencesUtil.putInt(this, PreferenceKey.SETTING, PreferenceKey.STATUS_BAR_HEIGHT, statusBarHeight); LogUtil.e(statusBarHeight + ""); } public int getStatusBarHeight() { int result = 0; int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android"); if (resourceId > 0) { result = getResources().getDimensionPixelSize(resourceId); } return result; }以上就是小編為大家?guī)?lái)的Activity取消界面切換的默認(rèn)動(dòng)畫方法(推薦)全部?jī)?nèi)容了,希望大家多多支持武林網(wǎng)~
新聞熱點(diǎn)
疑難解答
圖片精選