android禁止屏幕自动旋转_在android程序中禁止屏幕旋转和避免重启Activity
(一)禁止屏幕随手机旋转变化:
有时候我们希望让一个程序的界面始终保持在一个方向,不随手机方向旋转而变化:
在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相关推荐
- android开发之Intent.setFlags()_让Android点击通知栏信息后返回正在运行的程序
android开发之Intent.setFlags()_让Android点击通知栏信息后返回正在运行的程序 在应用里使用了后台服务,并且在通知栏推送了消息,希望点击这个消息回到activity, ...
- android app防止锁屏_设置Android系统永不锁屏永不休眠的方法
在进行Android系统开发的时候,有些特定的情况需要设置系统永不锁屏,永不休眠.本篇文章给大家介绍Android 永不锁屏,开机不锁屏,删除设置中休眠时间选项,需要的朋友一起学习吧. Android ...
- edge 禁止网页自动刷新_如何在Microsoft Edge中自动翻译网页
edge 禁止网页自动刷新 Microsoft 微软 The new version of Microsoft's Edge browser features automatic translatio ...
- android4.2 原生设置,干净整洁Android 4.2原生界面_手机Android频道-中关村在线
里奥1080P-N003在系统方面采用了Android 4.2版本,在界面上保持了原生的UI界面,在系统的整体流畅性上有一定的保障,并且相对于大部分定制ROM来说,看起来更加简洁,当然对于这方面笔者认 ...
- android获取spinner的值_在Android的Spinner中实现键值对的正确方法是什么
这是在Android中为Spinner实现键值对的正确方法吗? package com.mypackage import android.app.Activity; import android.os ...
- android应用开发实验报告_聚焦 Android 11: Android 11 应用兼容性
作者 / Android 产品经理 Diana Wong在往期 #11WeeksOfAndroid 系列文章中我们介绍了联系人和身份.隐私和安全,本期将聚焦 Android 11 兼容性.我们将为大家 ...
- android 短信自动备份软件,从Android设备备份短信的5大工具
您是否正在寻找2020中最好的数据传输工具? 然后再看看. 我们将向您展示最佳数据传输工具列表 备份短信 在Android上 您可以使用以下方法安全地保存您的个人文件. 部分1. 如何使用共享备份文本 ...
- android 恢复出厂 自动恢复文件夹,Android恢复出厂设置
恢复出厂设置核心代码:sendBroadcast(new Intent("android.intent.action.MASTER_CLEAR")); 即发送一个广播,需要在And ...
- excel自动筛选_在Excel 2007中按选择自动筛选
excel自动筛选 在Excel 2007中按选择自动筛选 (AutoFilter by Selection in Excel 2007) A couple of weeks ago I descri ...
- java 获取分辨率_如何在java中获得屏幕分辨率?
问题 如何以像素为单位获得屏幕分辨率(宽x高)? 我正在使用JFrame和java swing方法. #1 热门回答(232 赞) 你可以使用Toolkit.getScreenSize()方法获得屏幕 ...
最新文章
- js改变iframe链接
- 2018-2019 Exp2 后门原理与实践
- python动态爬取知乎_python爬虫从小白到高手 Day2 动态页面的爬取
- 最小二乘支持向量机的分析与改进及Python实现
- Java基础学习总结(160)——JDK15正式发布,划时代的ZGC同时宣布转正
- win7c盘空间越来越小_C盘空间越来越小?学会这几招,让你轻松驾驭磁盘管理
- 【C语言】初学者写基础代码的基本步骤
- 客户成功服务市场现状研究分析报告 -
- Python爬虫的多线程使用方法
- 系列 HTML+JS GAME制作 之 移动消灭-方块
- 思科交换机等设备基本配置
- 祛眼袋术前注意细节有哪些
- 最新kali之davtest
- iptables及其过滤规则
- jetson nano GPIO控制说明
- RectTransform属性
- 在linux的shell中/bin/true是什么意思?
- uniapp视频数组,点击播放-播放当前视频,其余暂停demo效果(整理)
- Spring+Struts2+Mybatis在Intellij下的整合
- 人脸识别系统FaceNet原理
热门文章
- thinkphp5实战系列(二)前台模板的引入
- 计算机学院三下乡,重庆理工大学计算机学院”三下乡“教师情牵故乡
- 35岁高以翔过劳猝死:人生无常,求各位项目经理少加点班吧
- c# 指定打开某个路径下的CMD_C# 插入、删除Excel分页符
- yum安装网络超时,尝试其他镜像
- c语言三角函数精度不够,快速三角函数算法的误差控制(sin cos)
- 让信息带钩的六种武器——《让创意更有黏性》优秀读后感4300字
- 十六、that的用法汇总
- DDR123信号完整性测试分析技术探析
- 两台计算机怎么ping通,怎么ping网络(2个网段电脑怎么ping通)