1. android怎麼設置橫豎屏切換
方法一:
1、首先在android手機打開「設置」這個選項的,點擊「顯示」這個功能;
2. android 橫豎屏切換時載入不同的Activity怎麼做
第一步:創建布局文件
1.res/layout創建豎屏布局
2.res/layout-land 創建橫屏布局
布局文件名要一直
第二步:根據屏幕方向添加對應的布局。
在Activity的onCreate中判斷當前橫豎屏狀態
//橫屏
getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE
//豎屏
getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT
3. Android只支持橫屏旋轉,監聽自動旋轉開關
設置橫屏其實很簡單,就是設置android:screenOrientation就可以。所以我們先來了解一下android:screenOrientation的屬性都有哪些?
unspecified,默認值,由系統決定,不同手機可能不一致
landscape,強制橫屏顯示
portrait,強制豎屏顯
behind,與前一個activity方向相同
sensor,根據物理感測器方向轉動,用戶90度、180度、270度旋轉手機方向,activity都更著變化
sensorLandscape,橫屏旋轉,一般橫屏游戲會這樣設置
sensorPortrait,豎碰埋屏旋轉
nosensor,旋轉設備時候,界面不會跟著旋轉。初始化界面方向由系統控制
user,用戶當前設置的方向
而滿足我們需求的屬性,分別為
1 landscape :強制橫屏,不管自動旋轉開關是否開啟,都只能是正方向橫屏,不會180度旋轉
2 sensorLandscape : 橫屏旋轉,不管自動旋轉開關是否開啟,都會180度旋轉
這兩個屬性明顯不滿足我們的需求,這時候我們只能去監聽自動旋轉開關的狀態,然後設置對應的screenOrientation,這樣才能滿足需求。
但是這只是一次獲取,所以我們需求實時監聽開關狀態。
我們通過譽吵肆ContentObserver來監聽自動開關狀態的改變
了解了這些之後,我們就能完成需求了
1 初始化監聽
2 注冊監聽慶轎
3 退出時取消監聽
4 相關的類與方法
4. 如何在android studio中實現 橫屏 和縱屏 的切換
在AndroidManifest.xml的每一個需要禁止轉向的Activity配置中加入android:screenOrientation=」landscape」 屬性。
參數說明:
1. landscape = 橫向
2. portrait = 縱向
避免在轉屏時重啟Activity
android中每次屏幕方向切換時都會重啟Activity,所以應該在Activity銷毀前保存當前活動的狀態,在Activity再次 Create的時候載入配置,那樣,進行中的游戲就不會自動重啟了!
要避免在轉屏時重啟Activity,可以通過在AndroidManifest.xml文件中重新定義方向(給每個Activity加上 android:configChanges=」keyboardHidden|orientation」屬性)。
在需要控制屏幕顯示方向的Activity中重寫 onConfigurationChanged(Configuration newConfig)方法,這樣在轉屏時就不會重啟Activity了。
5. android怎麼監聽系統是否是全屏顯示
可以在屏幕的Activity加監聽屏幕屬性改變,發生改變則檢查當前是否全屏狀態。
是全屏狀態發送,全屏的廣播消息,到監聽應用觸發操作。
@Override
public void onWindowAttributesChanged(LayoutParams params) {
// TODO Auto-generated method stub
super.onWindowAttributesChanged(params);
Log.e(TAG,"onWindowAttributesChanged()"+getWindow().getAttributes().flags);
if (WindowManager.LayoutParams.FLAG_FULLSCREEN == getWindow().getAttributes().flags) {
Log.e(TAG,"onWindowAttributesChanged() FLAG_FULLSCREEN");
}
}
(注意該判斷在屏幕切換橫豎屏是也會觸發,需要根據實際情況過濾橫豎屏切換的情況。)
6. Activity橫豎屏切換生命周期變化
onCreate ,
創建activity時調用。設置在該方法中,還以Bundle中可以提出用於創建該 Activity 所需的信息。
onStart ,
activity變為在屏幕上對用戶可見時,即獲得焦點時,會調用。
onResume ,
activity開始與用戶交互時調用(無論是啟動還是重新啟動一個活動,該方法總是被調用的)
onSaveInstanceState
onPause ,
activity被暫停或收回cpu和其他資源時調用,該方法用於保存活動狀態的
onStop ,
activity被停止並轉為不可見階段及後續的生命周期事件時,即失去焦點時調用
onDestroy ,
activity被完全從系統內存中移除時調用,該方法被調用可能是因為有人直接調用 finish()方法 或者系統決定停止該活動以釋放資源。
onRestoreInstanceState ,
Android在橫豎排切換時候,將主動銷毀activity和重新創建一個新的activity出來,在此過程中,onRestoreInstanceState就要被回調
onConfigurationChanged ,
配置指定屬性後,屏幕方向發生變化後回調此函數.
把該Activity添加
android:configChanges="orientation" ,
執行步驟3(切換成橫屏時)
android:configChanges="orientation" 對於4.04.0以上版本不生效
把該Activity添加 android:configChanges="orientation|screenSize" ,
執行步驟3(切換成橫屏時)
onConfigurationChanged-->
只列印onConfigChanged
把 android:configChanges="orientation|screenSize" 改成 android:configChanges="orientation|keyboardHidden|screenSize"
執行步驟3(切換橫屏幕)
只列印
onConfigChanged
執行步驟4(切換豎屏幕)
只列印onConfigChanged
切記一定要加上後邊的screenSize否則在4.0以上版本生命周期執行不生效。
當前Activity產生事件彈出Toast和AlertDialog的時候Activity的生命周期不會有改變
Activity運行時按下HOME鍵(跟被完全覆蓋是一樣的):
onPause --> onStop onRestart -->onStart--->onResume
Activity未被完全覆蓋只是失去焦點:onPause--->onResume
測試用手機版本5.1.1
Android實現屏幕旋轉方法
這種方法的優點:即使屏幕旋轉,Activity也不會重新onCreate。
缺點:屏幕只有一個方向。
這個方法的優點:我們可以隨時監聽屏幕旋轉變化,並對應做出相應的操作;
缺點:它只能一次旋轉90度,如果一下子旋轉180度,onConfigurationChanged函數不會被調用。
4.設置方向的其他方式
在AndroidManifest.xml設置
橫向顯示,但是基於設備感測器,既可以是按正常方向顯示,也可以反向顯示,在API Level 9中被引入。
android:screenOrientation="sensorLandscape"
縱向顯示,但是基於設備感測器,既可以是按正常方向顯示,也可以反向顯示,在API Level 9中被引入。
android:screenOrientation="sensorLandscape"
demo