前段時間在做模擬器的Launcher開發,遇到這個問題,使用的夜神模擬器,不確定其他模擬器也有這個問題,問題如下:
可以看到本來是橫屏的launcher在退出app後也變成豎屏了 。
看到這種bug,很容易想到的是橫豎屏切換的問題,launcher切換成豎屏後不能自己切換回來
解決方法是通過一開始activity的onCreate方法時,得到屏幕方向
/**
* 在設置的配置信息中獲取屏幕方向
* 系統中定義: int ORIENTATION_PORTRAIT = 1; 豎屏
* 系統中定義: int ORIENTATION_LANDSCAPE = 2; 橫屏
*/
miOriention = this.getResources().getConfiguration().orientation;
在AndroidManifest中給啓動app的activity的屬性設置configChanges參數,使其得到屏幕方向改變的回調,並於回調中設置成屏幕原來的方向。
android:configChanges="orientation|keyboardHidden|screenSize"
/**
* 屏幕方向發生改變的回調方法
* @param newConfig 配置信息
*/
@Override
public void onConfigurationChanged(Configuration newConfig) {
if (newConfig.orientation != miOriention) {
setRequestedOrientation(miOriention == 2 ? ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE : ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
super.onConfigurationChanged(newConfig);
}