編輯:關於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
先占個位置,下次翻譯~ :p There are a few scenarios in which your activity is destroyed due t
經常玩手機的朋友都知道。微信朋友圈是是我們經常逛的地方,大家知道只要微信朋友圈有消息更新,我們微信界面上就會相信一個紅點提示,有強迫症的朋友可能就著急了,下
本篇博客的框架什麼是IPCIPC(Inter-Process Communication) 進程間通信,是指兩個不同進程之間數據交換的過程。在明確其之前,需要先搞懂幾個概
Gradle自定義插件在Gradle中創建自定義插件,Gradle提供了三種方式:在build.gradle腳本中直接使用 在buildSrc中使用 在獨立Module中