前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android设备屏幕方向的一二事

Android设备屏幕方向的一二事

原创
作者头像
fdroid
发布2018-07-17 13:13:49
1.7K0
发布2018-07-17 13:13:49
举报
文章被收录于专栏:Android填坑指南Android填坑指南

1. 判断当前屏幕方向

方法1. 根据设备配置信息

代码语言:javascript
复制
Configuration cf= activity.getResources().getConfiguration();  // 获取设置的配置信息
int ori = cf.orientation;                                      // 获取屏幕方向
if (ori == cf.ORIENTATION_LANDSCAPE) {
    // 横屏
}
if (ori == cf.ORIENTATION_PORTRAIT) {
    // 竖屏
}

方法2. 通过设备分辨率判断

代码语言:javascript
复制
DisplayMetrics dm = new DisplayMetrics();
activity.getWindowManager().getDefaultDisplay().getMetrics(dm);
mWidth = dm.widthPixels;
mHeight = dm.heightPixels;
// 比较宽高的大小判断屏幕方向(宽>高,则为横屏)
if (mWidth > mHeight) {
    // 横屏
} else {
    // 竖屏
}

2. 设置屏幕方向

1. 使用activity.setRequestedOrientation(orientation)方法

orientation的取值为: - 横屏:Configuration.ORIENTATION_LANDSCAPE - 竖屏:Configuration.ORIENTATION_ PORTRAIT

2. 配置AndroidManifest.xml

在activity 中加入 android:screenOrientation="landscape" 属性。 该属性有两个值 portrait//竖屏 landscape//横屏

3. 处理Activity的配置变更

有些设备配置可能会在运行时发生变化(例如屏幕方向、键盘可用性及语言)。 发生这种变化时,Android 会重启正在运行的 Activity。重启行为旨在通过利用与新设备配置匹配的备用资源自动重新加载Activity,来帮助它适应新配置。但重启Activity并恢复大量数据不仅成本高昂,且用户体验差。 在这种情况下,有两种选择:在配置变更期间保留对象,或自行处理配置变更。 若在配置变更期间保留对象,可通过保留 Fragment 来减轻重新初始化 Activity 的负担。Fragment可持有对需要保留的状态对象的引用。 若声明由Activity自行处理配置变更,需在`AndroidManifest.xml`中activity的`configChanges`属性列出 Activity 将自行处理的配置更改。在运行时发生配置更改时,默认情况下会关闭 Activity 然后将其重新启动,但使用该属性声明配置将阻止 Activity 重新启动。Activity 会保持运行状态,并且系统会调用其 `onConfigurationChanged(Configuration newConfig)`方法,newConfig对象代表的是所有当前配置,而不仅仅是已经变更的配置。 经测试,若需切屏时不重启Activity,应设置属性为

代码语言:javascript
复制
configChanges="orientation|keyboardHidden|screenSize"

说明

orientation

屏幕方向发生了变化 - 用户旋转了设备。

keyboardHidden

键盘可访问性改变 - 键盘已隐藏

screenSize

当前可用屏幕尺寸发生了变化。(目标API>13时必需)

参考https://developer.android.com/guide/topics/resources/runtime-changes.htmlAndroid设备屏幕方向的一二事

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 判断当前屏幕方向
    • 方法1. 根据设备配置信息
      • 方法2. 通过设备分辨率判断
      • 2. 设置屏幕方向
        • 1. 使用activity.setRequestedOrientation(orientation)方法
          • 2. 配置AndroidManifest.xml
          • 3. 处理Activity的配置变更
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档