作者lovelycateye (我還想要更多力量)
看板AndroidDev
標題[分享] 在全螢幕和非全螢幕間切換
時間Thu Feb 23 11:16:57 2012
最近要用到
轉直的不要全螢幕
轉橫的要顯示成全螢幕
當然View也要不同啦,不過這只是小事情。
一時之間咕不到,不過倒是有踹出來。
有錯請不吝指教。
在onConfigurationChanged裡面做這件事,
最主要就是記得要clearFlags
不然畫面會跑一部分到status bar底下,看起來怪怪的。
final Window window = getWindow();
switch(orientation) {
case ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE:
window.clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
showLandscape(); //顯示你的橫的要長的樣子
break;
case ActivityInfo.SCREEN_ORIENTATION_PORTRAIT:
default:
window.clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
window.setFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
showPortraitView(); //你直的要長怎樣?
break;
}
至於orientation的判斷如下:我是以長寬來判斷。
private int getScreenOrientation() {
Display display = getWindowManager().getDefaultDisplay();
screenWidth = display.getWidth();
screenHeight = display.getHeight();
return screenWidth > screenHeight ?
ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE :
ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
}
--
抱最大的希望,為最大的努力,做最壞的打算。 嚴長壽
領最大的薪水,擁最大的權勢,做最壞的榜樣。 立法院
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.116.88.75
推 LaPass:螢幕在轉的時候,會經過一次onresume,把建立畫面的動作寫 02/23 11:23
→ LaPass:在那邊就ok了 02/23 11:24
→ lovelycateye:所以是不用clearFlags?因為問題並不在建立畫面。 02/23 11:27
→ lovelycateye:問題是出在全螢幕切換間會造成畫面被狀態列擋住 02/23 11:28
→ lovelycateye:至於要在onResume還是onConfigurationChanged做 02/23 11:29
→ lovelycateye:這部份我覺得或許onResume比較好。 02/23 11:29