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

來源:互聯網
上載者:User

接上篇,儘管這個對旋轉沒有啥用但不代表麼用。一個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


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.