转自 http://www.open-open.com/lib/view/open1328069449468.html

Android横竖屏要解决的问题应该就两个:

一.布局问题

二.重新载入问题

1.布局问题:如果不想让软件在横竖屏之间切换,最简单的办法就是在项目的AndroidManifest.xml中找到你所指定的activity中加上android:screenOrientation属性,他有以下几个参数:

"unspecified":默认值 由系统来判断显示方向.判定的策略是和设备相关的,所以不同的设备会有不同的显示方向. 
"landscape":横屏显示(宽比高要长) 
"portrait":竖屏显示(高比宽要长) 
"user":用户当前首选的方向 
"behind":和该Activity下面的那个Activity的方向一致(在Activity堆栈中的) 
"sensor":有物理的感应器来决定。如果用户旋转设备这屏幕会横竖屏切换。 
"nosensor":忽略物理感应器,这样就不会随着用户旋转设备而更改了("unspecified"设置除外)。

也可以在Java代码中通过setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)来设置。

如果要让软件在横竖屏之间切换,由于横竖屏的高宽会发生转换,有可能会要求不同的布局。可以通过以下方法来切换布局:

1)在res目录下建立layout-land和layout-port目录,相应的layout文件不变,比如main.xml。layout-land是横屏的layout,layout-port是竖屏的layout,其他的不用管,模拟器会自动寻找。

2)通过 this.getResources().getConfiguration().orientation来判断当前是横屏还是竖屏然后来加载相应的 xml布局文件。因为当屏幕变为横屏的时候,系统会重新呼叫当前Activity的onCreate方法,你可以把以下方法放在你的onCreate中来检查当前的方向,然后可以让你的setContentView来载入不同的layout xml.

1 if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE){
2     Log.i("info""landscape"); // 横屏
3 }
4 else if (this.getResources().getConfiguration().orientation ==Configuration.ORIENTATION_PORTRAIT) {
5     Log.i("info""portrait"); // 竖屏
6 }

在onConfigurationChanged()方法中也可以检测拥有硬键盘的键盘状态

1 //检测实体键盘的状态:推出或者合上   
2 if (newConfig.hardKeyboardHidden ==Configuration.HARDKEYBOARDHIDDEN_NO){
3    //实体键盘处于推出状态,在此处添加额外的处理代码
4 }
5 else if (newConfig.hardKeyboardHidden ==Configuration.HARDKEYBOARDHIDDEN_YES){
6    //实体键盘处于合上状态,在此处添加额外的处理代码
7 }

2.重新载入问题。如果不需要从新载入,可以在AndroidManifest.xml中加入配置 android:configChanges="orientation|keyboardHidden",配置 android:configChanges的作用就是如文档所说的:Specify one or more configuration changesthat the activity will handle itself. If not specified, the activity will berestarted if any of these configuration changes happen in the system。这样在程序中Activity就不会重复的调用onCreate()甚至不会调用onPause、onResume.只会调用一个 onConfigurationChanged(Configuration newConfig)。如果需要重新载入,则不需要做任何修改。不过如果需要在重新载入过程中保存之前的操作内容或数据,则需要保存之前的数据。然后在 activity的onCreate()中取出来。当然,如此就不能设置android:configChanges()了,否则就不会调用 onCreate()方法。

如果要彻底禁止翻转,可以设置android:screenOrientation的属性为nosensor,如此就可以忽略重力感应带来的麻烦了。不过在模拟器上不管用,在真机上是正确的。android:screenOrientation="portrait"

则无论手机如何变动,拥有这个属性的activity都将是竖屏显示。

android:screenOrientation="landscape",为横屏显示。

这里提一个小知识,Android模拟器中,快捷键"Ctrl+F11/F12"可以实现转屏

转载于:https://www.cnblogs.com/DonkeyTomy/articles/3245988.html

【转】 Android 屏幕切换总结相关推荐

  1. android 屏幕切换监听

    昨天,我试着在屏幕切换时,使View显示在不同的位置,在网上搜索了一些资料,自己做了一段时间,终于完成了功能. 由于屏幕切换会调用activity的各个生命周期,所以需要在manifest的activ ...

  2. android实时监控屏幕代码,Android 屏幕切换监听的实例代码

    昨天,我试着在屏幕切换时,使View显示在不同的位置,在网上搜索了一些资料,自己做了一段时间,终于完成了功能. 由于屏幕切换会调用activity的各个生命周期,所以需要在manifest的activ ...

  3. Android 屏幕切换效果实现 (转)

    本教程将介绍如何实现屏幕间的切换效果.在前述 Ophone 2D UI 动画教程 中介绍了OPhone提供的animation功能,里面介绍了如何操作具体View的动画效果,在一般情况下我们希望在程序 ...

  4. Android屏幕切换效果实现

    屏幕切换效果实现 摘自:程云峰,网名 icess,杭州恒生电子研发中心. 个人网站: http://www.chengyunfeng.com/ 本教程将介绍如何实现屏幕间的切换效果.在前述 Ophon ...

  5. Android屏幕切换

    点击"银行"进入"易惠通 - 银行"屏:   GridView屏对应MainActivity:ListView屏对应BankActivity. 这两个Activ ...

  6. Android的Activity屏幕切换动画(一)-左右滑动切换

    为什么80%的码农都做不了架构师?>>>    这段时间一直在忙Android的项目,总算抽出点时间休息一下,准备把一些项目用到的Android经验分享一下. 在Android开发过 ...

  7. Android ViewFlipper滑动屏幕切换

    最近看到ViewFlipper和Animation在一起的用法,感觉很好,我就自己写了一下,感觉灰常好用,效果比gallery的滚动查看图片好用多了,这个也是实现滚动屏幕切换图片,但是用户体验要好很多 ...

  8. 转 Android的Activity屏幕切换动画(一)-左右滑动切换

    这段时间一直在忙Android的项目,总算抽出点时间休息一下,准备把一些项目用到的Android经验分享一下. 在Android开发过程中,经常会碰到Activity之间的切换效果的问题,下面介绍一下 ...

  9. android ViewFlipper屏幕切换

    大家好,今天给我将介绍ViewFlipper屏幕切换,屏幕切换指的是在同一个Activity内屏幕间的切换,最常见的切换例如一个系统设置页面:一个个性化设置页面等.不说废话,直接看代码. 1.建立工程 ...

最新文章

  1. 漫画:设计模式之 “工厂模式”
  2. C/C++版数据结构之链表三
  3. java连续输入_java – 要求用户进行多次输入
  4. Android 位置服务——BaiduLocation的使用
  5. 上位机获取单片机发来的数据并进行检验
  6. linux的目录创建时间,LINUX下文件创建时间问题
  7. ASP.NET Web API 开篇示例介绍
  8. 平安性格测试题及答案_中国平安EPASS测试题2016年
  9. 大数据平台层级架构图
  10. 比特率和波特率的区别
  11. JavaScript,for循环效率测试,不同遍历循环测试,数组添加效率测试,大数组拼接测试,for循环遍历修改 和 string replace效率
  12. bpm导出成html,一种基于BPM系统的EXECL导入免开发生成静态HTML表单的方法与流程...
  13. ios修改apn的插件_更改接入点,瞬间让你在4G网络下快到不行!效果立竿见影!...
  14. ElementUI 图标字体无法正常显示 本地CDN文件
  15. 如何改变Python画笔颜色
  16. VirtualBox Guest Additions
  17. rabbitMq实现延迟队列
  18. mt4 虚拟服务器 配置,mt4配置云服务器教程
  19. nbu进程的异常造成备份出错
  20. Cobbler无人值守安装

热门文章

  1. 36个引人注目JQuery导航菜单
  2. 编译arm版本驱动模块
  3. s5p4418 Android 4.4.2 驱动层 HAL层 服务层 应用层 开发流程记录(三 APP应用)
  4. centos 卸载docker_Spring Boot学习05_Docker卸载与安装
  5. linux时间调整为dst,Linux上系统时间函数、DST等相关有关问题总结
  6. java 管理对象是什么_Java工程师(16)对象的管理
  7. mPaas-WKWebview网络拦截常见问题
  8. 阿里 双11 同款流控降级组件 Sentinel Go 正式GA,云原生服务稳稳稳
  9. PouchContainer 富容器技术解析
  10. golang mysql大量写入_Golang 实现分片读取http超大文件流和并发控制