(一)禁止屏幕随手机旋转变化:

有时候我们希望让一个程序的界面始终保持在一个方向,不随手机方向旋转而变化:

在AndroidManifest.xml的每一个需要禁止转向的Activity配置中加入android:screenOrientation=”landscape” 属性。

landscape = 横向

portrait = 纵向

避免在转屏时重启ACTIVITY

android中每次屏幕方向切换时都会重启Activity,所以应该在Activity销毁前保存当前活动的状态,在Activity再次

Create的时候载入配置,那样,进行中的游戏就不会自动重启了!

要避免在转屏时重启Activity,可以通过在AndroidManifest.xml文件中重新定义方向(给每个Activity加上 android:configChanges=”keyboardHidden|orientation”属性)。

在需要控制屏幕显示方向的Activity中重写onConfigurationChanged(Configuration

newConfig)方法,这样在转屏时就不会重启Activity了。

(二)关于android屏幕旋转

跟屏幕相关的有,设置系统重力感应,设置屏幕状态,获得屏幕方向。

1. 系统重力感应可以理解为重力感应开关

screenchange = Settings.System.getInt(

activity.getContentResolver(),

Settings.System.ACCELEROMETER_ROTATION); 获得是否开启重力感应,1开启;

设置重力感应开关

Settings.System.putInt(

activity.getContentResolver(),

Settings.System.ACCELEROMETER_ROTATION, 0);

当设置了重力感应开关后,体现就是手机不能通过用户的手来切换手机屏幕时改变屏幕的方向,也就是拿着手机转会没有反应。设置重力感应开关是对用户的手起作用。

2. 设置屏幕状态

activity .setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_USER);

这个参数有多中形式,比如这里的user是获取当前的屏幕方向,即用户选择

这里还可以设置屏幕方向为竖屏,为横屏;即SCREEN_ORIENTATION_PORTRAIT和SCREEN_ORIENTATION_LANDSCAPE;

所以现在看看1和2的联系,当重力开关如果关着,设置屏幕状态有无反应了。事实证明对于SCREEN_ORIENTATION_PORTRAIT和SCREEN_ORIENTATION_LANDSCAPE是可以的。也就是说,即使重力感应开关是关着的,如果通过设置屏幕状态为强制竖屏,或者强制横屏,设置的当前是生效的,生效完后,屏幕依然不能感应旋转。但是试过SCREEN_ORIENTATION_USER是不生效的。

3. 获得屏幕方向,如果要获取强制竖屏,强制横屏这种特殊页面的屏幕状态,可以用getRequestedOrientation,而现在要获得一个user屏幕状态的当前屏幕方向。因为user屏幕状态下是可以旋转的,这个时候就需要用到

android.view.WindowManager manager =

context.getSystemService(Context.WINDOW_SERVICE);

int rotation = manager.getDefaultDisplay().getRotation();

rotation的值为Surface.ROTATION_90或Surface.ROTATION_270时表示竖屏

rotation的值为Surface.ROTATION_0或者Surface.ROTATION_180表示横屏

所以我们可以再特定的情况下用上面的方法,比如屏蔽用户手操作手机的旋屏事件,我们可以禁止重力感应响应,这样什么oncreate,configchange是肯定不会执行了。

而强制横竖屏时就可以选择屏幕状态,强制横屏,强制竖屏不受重力感应的影响。而且自适应屏幕也可以通过设置屏幕状态来达成。

当需要获得当前屏幕的状态,如果是强制横屏,强制竖屏,直接通过get屏幕状态就可以。但是如果是自适应,要获取屏幕状态,我们可以通过getRotation来确定当前屏幕是竖屏还是横屏状态。

android禁止屏幕自动旋转_在android程序中禁止屏幕旋转和避免重启Activity相关推荐

  1. android开发之Intent.setFlags()_让Android点击通知栏信息后返回正在运行的程序

    android开发之Intent.setFlags()_让Android点击通知栏信息后返回正在运行的程序   在应用里使用了后台服务,并且在通知栏推送了消息,希望点击这个消息回到activity, ...

  2. android app防止锁屏_设置Android系统永不锁屏永不休眠的方法

    在进行Android系统开发的时候,有些特定的情况需要设置系统永不锁屏,永不休眠.本篇文章给大家介绍Android 永不锁屏,开机不锁屏,删除设置中休眠时间选项,需要的朋友一起学习吧. Android ...

  3. edge 禁止网页自动刷新_如何在Microsoft Edge中自动翻译网页

    edge 禁止网页自动刷新 Microsoft 微软 The new version of Microsoft's Edge browser features automatic translatio ...

  4. android4.2 原生设置,干净整洁Android 4.2原生界面_手机Android频道-中关村在线

    里奥1080P-N003在系统方面采用了Android 4.2版本,在界面上保持了原生的UI界面,在系统的整体流畅性上有一定的保障,并且相对于大部分定制ROM来说,看起来更加简洁,当然对于这方面笔者认 ...

  5. android获取spinner的值_在Android的Spinner中实现键值对的正确方法是什么

    这是在Android中为Spinner实现键值对的正确方法吗? package com.mypackage import android.app.Activity; import android.os ...

  6. android应用开发实验报告_聚焦 Android 11: Android 11 应用兼容性

    作者 / Android 产品经理 Diana Wong在往期 #11WeeksOfAndroid 系列文章中我们介绍了联系人和身份.隐私和安全,本期将聚焦 Android 11 兼容性.我们将为大家 ...

  7. android 短信自动备份软件,从Android设备备份短信的5大工具

    您是否正在寻找2020中最好的数据传输工具? 然后再看看. 我们将向您展示最佳数据传输工具列表 备份短信 在Android上 您可以使用以下方法安全地保存您的个人文件. 部分1. 如何使用共享备份文本 ...

  8. android 恢复出厂 自动恢复文件夹,Android恢复出厂设置

    恢复出厂设置核心代码:sendBroadcast(new Intent("android.intent.action.MASTER_CLEAR")); 即发送一个广播,需要在And ...

  9. excel自动筛选_在Excel 2007中按选择自动筛选

    excel自动筛选 在Excel 2007中按选择自动筛选 (AutoFilter by Selection in Excel 2007) A couple of weeks ago I descri ...

  10. java 获取分辨率_如何在java中获得屏幕分辨率?

    问题 如何以像素为单位获得屏幕分辨率(宽x高)? 我正在使用JFrame和java swing方法. #1 热门回答(232 赞) 你可以使用Toolkit.getScreenSize()方法获得屏幕 ...

最新文章

  1. js改变iframe链接
  2. 2018-2019 Exp2 后门原理与实践
  3. python动态爬取知乎_python爬虫从小白到高手 Day2 动态页面的爬取
  4. 最小二乘支持向量机的分析与改进及Python实现
  5. Java基础学习总结(160)——JDK15正式发布,划时代的ZGC同时宣布转正
  6. win7c盘空间越来越小_C盘空间越来越小?学会这几招,让你轻松驾驭磁盘管理
  7. 【C语言】初学者写基础代码的基本步骤
  8. 客户成功服务市场现状研究分析报告 -
  9. Python爬虫的多线程使用方法
  10. 系列 HTML+JS GAME制作 之 移动消灭-方块
  11. 思科交换机等设备基本配置
  12. 祛眼袋术前注意细节有哪些
  13. 最新kali之davtest
  14. iptables及其过滤规则
  15. jetson nano GPIO控制说明
  16. RectTransform属性
  17. 在linux的shell中/bin/true是什么意思?
  18. uniapp视频数组,点击播放-播放当前视频,其余暂停demo效果(整理)
  19. Spring+Struts2+Mybatis在Intellij下的整合
  20. 人脸识别系统FaceNet原理

热门文章

  1. thinkphp5实战系列(二)前台模板的引入
  2. 计算机学院三下乡,重庆理工大学计算机学院”三下乡“教师情牵故乡
  3. 35岁高以翔过劳猝死:人生无常,求各位项目经理少加点班吧
  4. c# 指定打开某个路径下的CMD_C# 插入、删除Excel分页符
  5. yum安装网络超时,尝试其他镜像
  6. c语言三角函数精度不够,快速三角函数算法的误差控制(sin cos)
  7. 让信息带钩的六种武器——《让创意更有黏性》优秀读后感4300字
  8. 十六、that的用法汇总
  9. DDR123信号完整性测试分析技术探析
  10. 两台计算机怎么ping通,怎么ping网络(2个网段电脑怎么ping通)