看板 AndroidDev 關於我們 聯絡資訊
最近要用到 轉直的不要全螢幕 轉橫的要顯示成全螢幕 當然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