【转】 Android 屏幕切换总结
转自 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 屏幕切换总结相关推荐
- android 屏幕切换监听
昨天,我试着在屏幕切换时,使View显示在不同的位置,在网上搜索了一些资料,自己做了一段时间,终于完成了功能. 由于屏幕切换会调用activity的各个生命周期,所以需要在manifest的activ ...
- android实时监控屏幕代码,Android 屏幕切换监听的实例代码
昨天,我试着在屏幕切换时,使View显示在不同的位置,在网上搜索了一些资料,自己做了一段时间,终于完成了功能. 由于屏幕切换会调用activity的各个生命周期,所以需要在manifest的activ ...
- Android 屏幕切换效果实现 (转)
本教程将介绍如何实现屏幕间的切换效果.在前述 Ophone 2D UI 动画教程 中介绍了OPhone提供的animation功能,里面介绍了如何操作具体View的动画效果,在一般情况下我们希望在程序 ...
- Android屏幕切换效果实现
屏幕切换效果实现 摘自:程云峰,网名 icess,杭州恒生电子研发中心. 个人网站: http://www.chengyunfeng.com/ 本教程将介绍如何实现屏幕间的切换效果.在前述 Ophon ...
- Android屏幕切换
点击"银行"进入"易惠通 - 银行"屏: GridView屏对应MainActivity:ListView屏对应BankActivity. 这两个Activ ...
- Android的Activity屏幕切换动画(一)-左右滑动切换
为什么80%的码农都做不了架构师?>>> 这段时间一直在忙Android的项目,总算抽出点时间休息一下,准备把一些项目用到的Android经验分享一下. 在Android开发过 ...
- Android ViewFlipper滑动屏幕切换
最近看到ViewFlipper和Animation在一起的用法,感觉很好,我就自己写了一下,感觉灰常好用,效果比gallery的滚动查看图片好用多了,这个也是实现滚动屏幕切换图片,但是用户体验要好很多 ...
- 转 Android的Activity屏幕切换动画(一)-左右滑动切换
这段时间一直在忙Android的项目,总算抽出点时间休息一下,准备把一些项目用到的Android经验分享一下. 在Android开发过程中,经常会碰到Activity之间的切换效果的问题,下面介绍一下 ...
- android ViewFlipper屏幕切换
大家好,今天给我将介绍ViewFlipper屏幕切换,屏幕切换指的是在同一个Activity内屏幕间的切换,最常见的切换例如一个系统设置页面:一个个性化设置页面等.不说废话,直接看代码. 1.建立工程 ...
最新文章
- 漫画:设计模式之 “工厂模式”
- C/C++版数据结构之链表三
- java连续输入_java – 要求用户进行多次输入
- Android 位置服务——BaiduLocation的使用
- 上位机获取单片机发来的数据并进行检验
- linux的目录创建时间,LINUX下文件创建时间问题
- ASP.NET Web API 开篇示例介绍
- 平安性格测试题及答案_中国平安EPASS测试题2016年
- 大数据平台层级架构图
- 比特率和波特率的区别
- JavaScript,for循环效率测试,不同遍历循环测试,数组添加效率测试,大数组拼接测试,for循环遍历修改 和 string replace效率
- bpm导出成html,一种基于BPM系统的EXECL导入免开发生成静态HTML表单的方法与流程...
- ios修改apn的插件_更改接入点,瞬间让你在4G网络下快到不行!效果立竿见影!...
- ElementUI 图标字体无法正常显示 本地CDN文件
- 如何改变Python画笔颜色
- VirtualBox Guest Additions
- rabbitMq实现延迟队列
- mt4 虚拟服务器 配置,mt4配置云服务器教程
- nbu进程的异常造成备份出错
- Cobbler无人值守安装
热门文章
- 36个引人注目JQuery导航菜单
- 编译arm版本驱动模块
- s5p4418 Android 4.4.2 驱动层 HAL层 服务层 应用层 开发流程记录(三 APP应用)
- centos 卸载docker_Spring Boot学习05_Docker卸载与安装
- linux时间调整为dst,Linux上系统时间函数、DST等相关有关问题总结
- java 管理对象是什么_Java工程师(16)对象的管理
- mPaas-WKWebview网络拦截常见问题
- 阿里 双11 同款流控降级组件 Sentinel Go 正式GA,云原生服务稳稳稳
- PouchContainer 富容器技术解析
- golang mysql大量写入_Golang 实现分片读取http超大文件流和并发控制