Android横竖屏切换总结

2017-09-11  本文已影响0人  小贱嘎嘎

如何设置屏幕方向

如何获取当前屏幕方向

  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()---");
}
}

可以看出在未配置configChange属性的情况下旋转屏幕会销毁并重建Activity

控制台打印输出:

   E/MainActivity: ---onCreate()---
   E/MainActivity: ---onStart()---
   E/MainActivity: ---onResume()---
   E/MainActivity: ---onConfigurationChanged()---

可以看出在配置了android:configChanges="orientation|screenSize|keyboardHidden"后旋转屏幕系统不会销毁Activity而是调用onConfigurationChanged()方法

注意:当配置configChanged属性后,如果后台没有APP进程时进入APP,如果此时手机是横屏则系统默认加载的是layout-land(如果有的话)资源目录下的布局文件,如果是竖屏则加载layout目录下的资源文件(即使用户旋转屏幕也不会变)。可以认为只有在未配置configChanged属性的情况下系统才会在屏幕旋转的时候适配为横竖屏切换而设置的相应资源文件。

上一篇 下一篇

猜你喜欢

热点阅读