如何設置屏幕方向
用戶手動設置
在開啟手機的自動旋轉功能后旋轉屏幕即可味咳。-
代碼設置
通過Activity類的setRequestOrientation(int orientation)方法洒忧。
參數orientation從ActivityInfo類的靜態(tài)常量獲取,常用的如下:ActivityInfo.SCREEN_ORIENTATION_PORTRAIT//豎屏 ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE//橫屏 ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT//豎屏反方向 ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE//橫屏反方向
如何獲取當前屏幕方向
int Activity.getRequestOrientation();//返回一個整型椅挣,此整型在ActivityInfo中
生命周期
如下代碼:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.e(MainActivity.class.getSimpleName(),"---onCreate()---");
}
@Override
protected void onStart() {
super.onStart();
Log.e(MainActivity.class.getSimpleName(),"---onStart()---");
}
@Override
protected void onResume() {
super.onResume();
Log.e(MainActivity.class.getSimpleName(),"---onResume()---");
}
@Override
protected void onPause() {
super.onPause();
Log.e(MainActivity.class.getSimpleName(),"---onPause()---");
}
@Override
protected void onStop() {
super.onStop();
Log.e(MainActivity.class.getSimpleName(),"---onStop()---");
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.e(MainActivity.class.getSimpleName(),"---onDestroy()---");
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
Log.e(MainActivity.class.getSimpleName(),"---onConfigurationChanged()---");
}
}
-
<activity>節(jié)點未配置android:configChange屬性情況下旋轉屏幕輸出
E/MainActivity: ---onStart()--- E/MainActivity: ---onResume()--- E/MainActivity: ---onPause()--- E/MainActivity: ---onStop()--- E/MainActivity: ---onDestroy()--- E/MainActivity: ---onCreate()--- E/MainActivity: ---onStart()--- E/MainActivity: ---onResume()---
可以看出在未配置configChange屬性的情況下旋轉屏幕會銷毀并重建Activity
-
<activity>節(jié)點配置如下
<activity android:name=".MainActivity" android:configChanges="orientation|screenSize|keyboardHidden"> </activity>
控制臺打印輸出:
E/MainActivity: ---onCreate()---
E/MainActivity: ---onStart()---
E/MainActivity: ---onResume()---
E/MainActivity: ---onConfigurationChanged()---
可以看出在配置了android:configChanges="orientation|screenSize|keyboardHidden"后旋轉屏幕系統(tǒng)不會銷毀Activity而是調用onConfigurationChanged()方法
注意:當配置configChanged屬性后,如果后臺沒有APP進程時進入APP,如果此時手機是橫屏則系統(tǒng)默認加載的是layout-land(如果有的話)資源目錄下的布局文件详民,如果是豎屏則加載layout目錄下的資源文件(即使用戶旋轉屏幕也不會變)∧岸遥可以認為只有在未配置configChanged屬性的情況下系統(tǒng)才會在屏幕旋轉的時候適配為橫豎屏切換而設置的相應資源文件沈跨。