Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android 強制橫屏或豎屏注意事項及onConfigurationChanged的使用

Android 強制橫屏或豎屏注意事項及onConfigurationChanged的使用

編輯:關於Android編程

接上篇,盡管這個對旋轉沒有啥用但不代表麼用。一個Activity如果在onReusume裡沒有特別聲明,或沒在AndroidManifest.xml配置成橫屏或豎屏,在旋轉時其聲明周期為:onCreate------onStart---onResume---屏幕旋轉----onPause(是去焦點)----onStop(徹底看不見)---onDestory,然後重新onCreate---onStart----onResume,即又走了一遍。為此需要強制設為橫屏或豎屏,方法大概三種:

1、AndroidManifest.xml 裡面設置,

android:name="org.yanzi.testrotateimageview.MainActivity"
android:label="@string/app_name"
android:screenOrientation="portrait"
>

2、在onResume裡

if(getRequestedOrientation()!=ActivityInfo.SCREEN_ORIENTATION_PORTRAIT){
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
super.onResume();

這種方法強烈不建議,誰用誰知道,在大的app不同方向啟動時會慢的要死!

3、在onConfigurationChanged裡判斷,為了onConfigurationChanged在監聽屏幕方向變化有效需要以下條件:

a、AndroidManifest.xml增加權限:


b、AndroidManifest.xml裡設置的MiniSdkVersion和 TargetSdkVersion屬性大於等於13

c、在AndroidManifest.xml的Activity裡增加:

android:configChanges="keyboard|screenSize|orientation|layoutDirection"

經過上面就可以在onConfigurationChanged()檢測屏幕方向變化事件,如果一旦在AndroidManifest.xml裡設死了方向,這塊就失效了。newConfig.orientation = 1 時表示豎屏,為2則橫屏。通過判斷這,然後setRequestedOrientation()來設置橫屏或豎屏。

這個onConfigurationChanged()相關的配置,最大的好處讓Activity方向變化時不進行onPause onStop。。。等操作,但如果想通過setRequestOrientation的方式設置橫屏或豎屏,帶來的負面效果跟第2種方式一樣,慢的要死。

總之,方向還是在配置裡寫死吧!!!如果需要旋轉可以用RotateImageView及後面會提到的旋轉布局,該布局能讓它裡面的子控件進行旋轉,而不影響父布局及Activity的生命周期。

相關參考 延伸閱讀: 鏈接1 鏈接2 鏈接3


  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved