美文网首页
Android横竖屏切换总结

Android横竖屏切换总结

作者: 小贱嘎嘎 | 来源:发表于2017-09-11 15:30 被阅读0次

如何设置屏幕方向

  • 用户手动设置
    在开启手机的自动旋转功能后旋转屏幕即可。

  • 代码设置
    通过Activity类的setRequestOrientation(int orientation)方法。
    参数orientation从ActivityInfo类的静态常量获取,常用的如下:

    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>节点未配置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>节点配置如下

      <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"后旋转屏幕系统不会销毁Activity而是调用onConfigurationChanged()方法

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

相关文章

  • Activity横竖屏切换

    横竖屏切换 activity 会被销毁 通过修改配置实现,横竖屏切换不销毁 android:configChang...

  • changeConfig配置 以及对activity生命周期的影

    Android横竖屏切换小结Android横竖屏切换小结(老样子,图片啥的详细文档,可以下载后观看 http://...

  • Android 横竖屏切换总结

    一.Android切换横竖屏 应用的横竖屏设置应用的横竖屏设置主要是通过Activity的screenOrient...

  • 直播

    Android屏幕横竖屏切换和生命周期管理的详细总结 - CSDN博客 Android视频直播原理详解 - csd...

  • Android横竖屏切换总结

    如何设置屏幕方向 用户手动设置在开启手机的自动旋转功能后旋转屏幕即可。 代码设置通过Activity类的setRe...

  • Android横竖屏切换总结

    开发过程中难免会遇到一些需要横竖屏切换的需求,要实现这类需求一定需要明白android关于横竖屏过程中的一些问题。...

  • Android 横竖屏切换总结

    首先,说一些常规的Activity的横竖屏切换的生命周期,如果没有在Manifests中特殊标明的话会重新生成一个...

  • Android横竖屏切换调研报告

    Android横竖屏切换调研报告 两种响应横竖屏切换的方式 不走生命周期,执行onConfigurationCha...

  • 横竖屏切换时Activity的生命周期

    横竖屏切换时Activity的生命周期 不设置android:configChanges 切换为横屏: onPau...

  • Android横竖屏切换生命周期的变化

    Android横竖屏切换生命周期的变化 在面试的时候,面试官可能会问到进行横竖屏切换时Activity生命周期的变...

网友评论

      本文标题:Android横竖屏切换总结

      本文链接:https://www.haomeiwen.com/subject/jacfsxtx.html