第一种,同时支持横屏和竖屏。

1)这种方式如果屏幕的布局在横屏和竖屏没有明显的差异,是不需要设置的,系统会默认旋转。

2)横屏和竖屏的布局明显的差异,比如横屏的时候可能会分成左右两屏,那么就需要我们进行相关的设置,这种情况下,一种布局文件是无法满足2种方向上的需要。

步骤如下:

  •  首先需要在androidmanifest.xml中加入配置android:configChanges="orientation|keyboardHidden|navigation“,这样在程序中. Activity就不会重复的调用onCreate(),甚至不会调用onPause、onResume,只会调用一个onConfigurationChanged(Configuration newConfig)的方法。
  • onConfigurationChanged的实现代码如下:
    • public void onConfigurationChanged(Configuration newConfig) {
              super.onConfigurationChanged(newConfig);
              if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
                      // TODO
              } else if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
                       // TODO
              }
      }
  • android:configChanges的介绍;
    • 通过设置这个属性可以使当前的Activity捕捉设备状态各种变化,下面是经常使用和可以识别的内容属性值:  
      CONFIG_FONT_SCALE   全局字体大小缩放发生改变
      CONFIG_MCC  --移动国家号码,由三位数字组成,每个国家都有自己独立的MCC,可以识别手机用户所属国家。
      CONFIG_MNC  --移动网号,在一个国家或者地区中,用于区分手机用户的服务商。
      CONFIG_LOCALE  --用户所在地区发生变化。
      CONFIG_TOUCHSCREEN --触摸屏发生了变化,这个基本不会发生。
      CONFIG_KEYBOARD --键盘模式发生变化
      CONFIG_NAVIGATION--导航模式发生变化
      CONFIG_ORIENTATION  设备旋转,横向显示和竖向显示模式切换
    • 使用的时候,各字段用“|”符号分隔开。android:configChanges="keyboardHidden|orientation"

第二种,是只支持一种模式,如只只是横屏,或者只支持竖屏模式。

这种模式的使用相当容易些,直接在AndroidManifest.xml里面配置一下就可以了。加入这一行android:screenOrientation=”landscape”。(landscape是横向,portrait是纵向)

需要注意的:每个activity都有这个属性screenOrientation,每个activity都需要设置,并且这个属性只能设给activity,不能设给application

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐