1.將Activity固定位豎屏能夠在配置文件這麼寫android
<activity android:screenOrientation="portrait">ide
橫屏顯示:函數
<activity android:screenOrientation="landscape">this
由於一個應用會有多個Activity, 能夠根據須要去配置每一個Activity的顯示方式,若是不設置,默認是能夠橫豎屏切換的.spa
2.在源碼中設置橫豎屏:code
設置豎屏:xml
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);blog
設置橫屏:事件
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSPACE);get
3.源碼處理橫豎屏切換事件
首先在AndroidManifest.xml中對Activity註冊android:configChanges="orientation" 屬性,而後在對應的Activity源碼中重寫onConfigurationChanged(Configuration newConfig) 函數便可,這樣處理後,當橫豎屏切換時,就會響應Activity中的onConfigurationChange(),而後對橫豎屏作斷定處理就能夠啦
@Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); if(this.getResources().getConfiguration().orientation ==Configuration.ORIENTATION_LANDSCAPE){ Log.e("tag","當前屏幕切換成橫屏顯示"); }else if(this.getResources().getConfiguration().orientation ==Configuration.ORIENTATION_PORTRAIT){ Log.e("tag","當前屏幕切換成豎屏顯示"); } }
使用此方法不會再切換橫豎屏時,Android默認重啓當前Activity了. 另外屏幕切換時還會觸發以下2個方法
@Override public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) { super.onSaveInstanceState(outState, outPersistentState); Log.e("tag","保存數據操做"); } @Override protected void onRestoreInstanceState(Bundle savedInstanceState) { super.onRestoreInstanceState(savedInstanceState); Log.e("tag","回覆數據操做"); }
切換橫豎屏時,會執行onSaveInstanceState(), 重啓載入當前Activity時會執行onRestoreInstanceState(),能夠用這2個函數進行屏幕切換時的數據處理.