android 跳转动画黑屏,Android8.0 适配解决页面跳转过程出现短暂黑屏的问题
小菜在適配 Android8.0 過程中,遇到很多問題,有很多很常見的問題,今天來整理一下頁面跳轉時黑屏的問題。
問題猜測
猜測一:
顯示 Activity 頁面之前會優先開啟一個 Starting Window(Preview Window),等待 Activity 加載完成之后顯示 UI 界面,猜測在這個等待過程中可能會出現頁面跳轉時的短暫黑屏。
猜測二:
小菜的 BaseActivity 頁面中在 onCreate() 和 finish(),方法中添加了進入頁面和退出頁面時的動畫效果,猜測可能是動畫效果不兼容引起頁面跳轉時的短暫黑屏。
@Override
public void onCreate(Bundle savedInstanceState) {
if (toggleOverridePendingTransitionStart()) {
overridePendingTransition(R.anim.slide_right_in, 0);
}
super.onCreate(savedInstanceState);
}
@Override
public void finish() {
super.finish();
BaseAppManager.getInstance().removeActivity(this);
if (toggleOverridePendingTransitionFinish()) {
overridePendingTransition(0, R.anim.slide_right_out);
}
}
嘗試解決
優先嘗試修改主題樣式,小菜前段時間整理 解決 Android 升級 SDK API 27 過程中遇到的問題 中有一個 Only fullscreen opaque activities can request orientation 問題,對于透明或半透明頁面,Android8.0 需要將主題中的 android:windowActionBar 屬性設為 false;小菜理解這個屬性設為 true 是設置本頁面為透明頁面,小菜以為如果去掉相當于省略這個過渡效果,等待 1-2s 時間進入新頁面;測試在小菜的 Android8.0 應用里面依舊會出現跳轉短暫黑屏現象,故嘗試方式一失敗!
再次嘗試修改主題樣式,以為萬能的添加主題背景圖,設置主題 windowBackground,小菜以為添加一張透明背景圖就可以解決;測試在小菜的應用背景圖是有的,但還是會出現跳轉短暫黑屏現象,故嘗試方式二失敗!
false
false
@null
@drawable/background_splash
@null
@color/colorPrimary
@color/colorPrimaryDark
@color/colorAccent
小菜擔心頁面中會有其他因素影響,新建一個 AppCompatActivity 進行測試,以上兩種方法均不會出現黑屏問題;因此小菜開始考慮 overridePendingTransition 動畫效果的影響,把 BaseActivity 中的動畫效果去掉;測試一切正常,沒有出現短暫黑屏現象,因此確定是 overridePendingTransition 問題;
小菜測試發現是在 Android8.0 中 overridePendingTransition 若設為進入和進出為 0 時會出現黑屏,解決方案是:將 0 換為固定的進入和退出的 anim 即可,如下:
// 原來
overridePendingTransition(R.anim.slide_right_in, 0);
// 替換為
overridePendingTransition(R.anim.slide_right_in, R.anim.slide_right_out);
// 原來
overridePendingTransition(0, R.anim.slide_right_out);
// 替換為
overridePendingTransition(R.anim.slide_right_in, R.anim.slide_right_out);
Tip:若只想有進入或退出時的動畫,另一個動畫去掉呢,可以自定義個 no_anim,替換上即可:
android:duration="0">
// 原來
overridePendingTransition(0, R.anim.slide_right_out);
// 替換為
overridePendingTransition(R.anim.no_anim, R.anim.slide_right_out);
插曲總結
overridePendingTransition 第一個參數為頁面進入時動畫,第二個參數為頁面退出時動畫,不要記反了;
小菜的 BaseActivity 是在 onCreate() 和 finish() 中分別調用 overridePendingTransition 的,所以想調整個別頁面其他動畫效果時,需要在 onCreate() 和 finish() 方法中方分別定義。
至此,小菜的應用在 Android8.0 中頁面跳轉短暫黑屏問題已解決,測試正常;小菜發現在優化和適配的道路上還有很多意想不到的問題,隨時調整隨時記錄,希望可以順利解決!
來源: 阿策小和尚
總結
以上是生活随笔為你收集整理的android 跳转动画黑屏,Android8.0 适配解决页面跳转过程出现短暂黑屏的问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 半透明AlphaBlend
- 下一篇: android sina oauth2.