Android横竖屏处理的三种方式

来源:互联网 发布:淘宝无节操买家秀图片 编辑:程序博客网 时间:2024/05/16 17:40

      Android 手机应用运行的时候,一般用户都是竖屏,突然将手机横屏的时候,那么程序会出现异常,因为在Android中每次屏幕切换都会,重启当前的Activiy,这种情况下,异常的处理方式有三种:

     1.锁定横竖屏

             在AndroidManifest.xml文件中,对Activity定义屏幕方向属性只能为横屏或竖屏。

             将屏幕固定为横屏:

            <activity android:screenOrientation="portrait">

             将屏幕固定为竖屏:

            <activity android:screenOrientation="landscape">


          因为一个Android应用中会有多个Activity,那么可以根据需要去配置每个activity的显示方式,如果不设置,默认可以横竖屏切换,或在源代码中横竖屏。

          设置竖屏:

          SetRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);          

          设置横屏:

          SetRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

   2.源代码中处理横竖屏事件

         在AndroidManifest.xml文件中对Activity注册android:configChanges属性,然后在对应的Activity源代码中重写onConfigurationChanged()函数即可     

         @Override         public void onConfigurationChanged(Configuration newConfig){              super.onConfigurationChanged(newConfig);              if(this.getResources().getConfiguration().oritention==Configuration.ORITENTION.LANDSCAPE){                  Log.e("Himi","当前屏幕切换成横屏显示模示");              } else if (this.getResources().getConfiguration().oritention==Configuration.ORITENTION.PORTRAIT){                  Log.e("Himi","当前屏幕切换成竖屏显示模示");              }         }
       使用此方式在切换横竖屏的时候,Android就不会重启当前Activity了。

   3. 重写onSaveInstanceState()  与 onRestoreInstanceState()函数       

      @Override      public void onSaveInstanceState(Bundle outState){        super.onSaveInstanceState(outState);        Log.e("Himi","ONSAVE");      }      @Override      public void onRestoreInstanceState(Bundle outState){        super.onRestoreInstanceState(outState);        Log.e("Himi","RESTORE");      }

        在屏幕进行横竖屏切换的时候,会响应onSaveInstanceState()函数,然后重启进入当前Activity,最后再执行onRestoreInstanceState函数,通过切换这两个函数进行屏幕横竖屏的处理。

如觉得文章不错,可扫描以下二维码打赏,以激励上传更好的开源代码:

         

          


原创粉丝点击