解决Android手机 屏幕横竖屏切换
Android中当屏幕横竖屏切换时,Activity的生命周期是重新加载(说明当前的Activity给销毁了,但又重新执行加载),怎么使屏幕横竖屏切换时,当前的Activity不销毁呢?
1. 在AndroidManifest.xml中为Activity设置configChanges属性,

<activity android:name=".MainActivity"
android:label="@string/app_name" android:configChanges="orientation|keyboardHidden|screenSize">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

configChanges有如下选项: 1. orientation :屏幕在纵向和横向间旋转, 2. keyboardHidden:键盘显示或隐藏 ,3.fontScale:用户变更了首选的字体大小 4.locale : 用户选择了不同的语言设定,5. keyboard :键盘类型变更,例如手机从12键盘切换到全键盘 6. touchscreen或navigation:键盘或导航方式变化,
如果缺少了keyboardHidden选项 不能防止Activity的销毁,并且在之后提到的onConfigurationChanged事件中 只能捕获竖屏变横屏的事件 不能捕获横屏变竖屏
2. 在对应的Activity中重写:onConfigurationChanged 方法:

- publicclass MainActivity extends Activity {
- private TextView textView;
- @Override
- publicvoid onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- Log.i("--Main--", "onCreate");
- textView=(TextView)findViewById(R.id.tv_id);
- }
- @Override
- publicvoid onConfigurationChanged(Configuration newConfig) {
- super.onConfigurationChanged(newConfig);
- Log.i("--Main--", "onConfigurationChanged");
- if(newConfig.orientation==Configuration.ORIENTATION_LANDSCAPE){
- textView.setText("当前屏幕为横屏");
- }else{
- textView.setText("当前屏幕为竖屏");
- }
- }
- }

布局文件就是一个简单的TextView此处不给出,
效果如下:
日志打印:
从日志中可以分析出屏幕横竖屏切换时Activity并没有销毁,当然你也可以运行项目在onCreate方法打个断点,执行发现onCreate方法只是在刚开始进入时执行,屏幕横竖屏切换时,已经不会在执行,因此可在onConfigurationChanged方法中下点文章!
注:如果项目不需要屏幕切换时可以设置为
1. android:screenOrientation="portrait" 始终以竖屏显示
2. android:screenOrientation="landscape" 始终以横屏显示
上面的配置文件设置屏幕横竖屏,下面是代码去控制屏幕横竖屏的:

- private OnClickListener onClick=new OnClickListener() {
- @Override
- publicvoid onClick(View v) {
- //设置屏幕为横屏if(v==butLandscrpe){
- MainActivity.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
- //设置为置屏幕为竖屏 }else{
- MainActivity.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
- }
- }
- };
- //监听系统设置的更改 @Override
- publicvoid onConfigurationChanged(Configuration newConfig) {
- super.onConfigurationChanged(newConfig);
- String message=newConfig.orientation==Configuration.ORIENTATION_LANDSCAPE ?"屏幕设置为:横屏" : "屏幕设置为:竖屏";
- showToast(message);
- }

各位朋友可以去试试,有什么意见或建议欢迎留言,谢谢!
原文地址:
http://www.cnblogs.com/zhangkai281/archive/2011/07/06/2099277.html
解决Android手机 屏幕横竖屏切换的更多相关文章
- android:configChanges 屏幕横竖屏切换
出处:http://blog.csdn.net/djy1992/article/details/9378195 ---> android:screenOrientation="por ...
- Android屏幕横竖屏切换和生命周期管理的详细总结
一般的我们去切换屏幕方向都是不希望Activity被重新创建,这时就需要对一些属性进行设置,或者使用代码设置. 今天想学一下Android屏幕横竖屏切换,但是网上很多知识不准确或不正确, ...
- 迅为4412开发板QtE系统源码-屏幕横竖屏切换修改方法
迅为4412开发板QtE系统源码-屏幕横竖屏切换修改方法 详情了解:http://topeetboard.com 更多了解:https://arm-board.taobao.com/ 用户在开发板上运 ...
- Android 如何去掉手机中横竖屏切换时的转屏动画?
前言 欢迎大家我分享和推荐好用的代码段~~ 声明 欢迎转载,但请保留文章原始出处: CSDN:http://www.csdn.net ...
- Android应用:横竖屏切换总结
眨眼间,已经到了2016你年春节前,离上一篇博客的时间已经有6个月多,回想起这半年的种种,不得不说,学习和工作实在是太忙了,或许这就是程序员的真实写照吧. 写博客之初,主要的目的还是为了把自己的学习痕 ...
- 关于android:screenOrientation="portrait" 横竖屏切换
当在AndroidManifest.xml文件中定义了android:screenOrientation="portrait",就表示当我们切换横竖屏的时候,屏幕的内容始终以竖屏显 ...
- Android视频播放和横竖屏切换
最近做了一个项目,里面用到了视频播放这一块,当时想考虑Vitamio,demo也做了出来,但是后来发现它是商业收费的,并且收费相当可观,所以只能放弃了.然后找到了ijkPlayer,功能也很强大,最终 ...
- android activity在横竖屏切换的时候不重新调用onCreate方法
在安卓系统中,横竖屏切换会默认重新调用onCreate等生命周期方法,如果此时有一些临时数据没有保存下来,很有可能会导致该数据丢失. 因此我们可以进行以下设置,来避免恒切换时重新调用onCreate方 ...
- JS -判断、监听屏幕横竖屏切换事件
通过监听window.orientationchange事件,当横竖屏切换事件时触发 <!doctype html> <html> <head> <title ...
随机推荐
- Spring、Springboot常用注解:@Qualifier(不定时更新)
1.@Qualifier 出现场景: 老项目中有多个实现类实现同一个接口时,或者一个项目中有多个数据源时,spring容器不知道该注入哪个实现类或者使用哪个数据源,该注解就派上用场. 1)多实现类实现 ...
- js添加对象数组
json 数组也是数组 var jsonstr="[{'name':'a','value':1},{'name':'b','value':2}]"; var jsonarray ...
- 关于springboot中文件上传,properties配置
spring.http.multipart.enabled=true #默认支持文件上传. spring.http.multipart.file-size-threshold=0 #支持文件写入磁盘. ...
- Java的SSH网站
1.框架 strusts2 + Hibernate + spring 2.图片 图1-1 网站结构 图1-2 java代码结构 3.源代码 3.1 UserAction.java package co ...
- systemd 配置文件
[Unit]区块通常是配置文件的第一个区块,用来定义 Unit 的元数据,以及配置与其他 Unit 的关系.它的主要字段如下. Description:简短描述 Documentation:文档地址 ...
- 【CF#303D】Rotatable Number
[题目描述] Bike是一位机智的少年,非常喜欢数学.他受到142857的启发,发明了一种叫做“循环数”的数. 如你所见,142857是一个神奇的数字,因为它的所有循环排列能由它乘以1,2,...,6 ...
- JS的事件汇总
一.前言 事件的绑定触发有很多种方法,我们如何选择呢? 很多时候,我们会使用鼠标事件,但是鼠标事件只能在PC设备上使用,当我们需要对不同设备兼容时怎么办呢? 二.正文 1. 事件的几个概念: 事件流: ...
- 【Unity】关于U3d与bip骨骼适配
http://blog.csdn.net/kiki110120/article/details/50371662 写在2015/12/21 1.Generic 在拿到美术FBX文件后,导入u3d,默认 ...
- Codeforces 76D 位运算
题意:给你两个数x 和 y, x = a + b, y = a XOR b,问有没有合法的a和b满足这个等式? 思路:有恒等式: a + b = ((a & b) << 1) + ...
- LIN通讯
1.定义 LIN(Local Interconnect Network)总线是基于UART/SCI(通用异步收发器/串行接口)的低成本串行通讯协议.其目标定位于车身网络模块节点间的低端通信,主要用于智 ...