ps:虽然现在的app一般都是固定一个屏幕方向,但是还是有必要了解下屏幕切换的方法和注意。

一 固定横竖屏

androidmainfest.xml中设置activoty属性:android:screenOration="land-space/portaie" (横向/竖向)

二 自动切换

1 androidmainfest.xml中设置activity属性:android:configChanges="orientation|screensize|keyboardHidden" (3.0以后需要同时设置screensize)

;由于横竖屏幕切换,activity会销毁,新建一个activity

注意:

重建之前需要保存数据:onRetainNoNConfigurationInstance()
     onCreate中获取之前保存的数据getLastNoNConfigurationInstance()

view相关,context上下文相关的无法保存 ,因为页面已经重新绘制了。

相关代码:
重写Activity.onRetainNonConfigurationInstance(),用户横竖屏切换前保存数据

@Override

public Object onRetainNonConfigurationInstance() {

final MyDataObject data = collectMyLoadedData();

return data;

}

在onCreate()函数中调用getLastNonConfigurationInstance(),获取onRetainNonConfigurationInstance()保存的数据

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

final MyDataObject data = (MyDataObject) getLastNonConfigurationInstance();

if (data == null) {

data = loadMyData();

}

...

}

2  当然可以做到,横竖屏切换的时候,页面随着改动,而不是销毁

后台代码实现activity的onConfigrationChanges()

@Override

public void onConfigurationChanged (Configuration newConfig){

super.onConfigurationChanged(newConfig);

setContentView(R.layout.main);

//注意,这里删除了init(),否则又初始化了,状态就丢失

findViews();

setListensers();

}

注意:

需要layout下设置同名的layout-land.xml 和layout-port.xml布局,其中控件的个数和名称都必须一样,横竖屏会自动匹配

Android横竖屏切换的更多相关文章

  1. Android横竖屏切换及其对应布局加载问题

    第一,横竖屏切换连带横竖屏布局问题: 如果要让软件在横竖屏之间切换,由于横竖屏的高宽会发生转换,有可能会要求不同的布局. 可以通过以下两种方法来切换布局: 1)在res目录下建立layout-land ...

  2. Android横竖屏切换小结

    Android横竖屏切换小结 (老样子,图片啥的详细文档,可以下载后观看 http://files.cnblogs.com/franksunny/635350788930000000.pdf) And ...

  3. 【转】Android横竖屏切换问题

    Android横竖屏切换总结(Android资料) Android横竖屏要解决的问题应该就两个: 一.布局问题 二.重新载入问题 1.布局问题:如果不想让软件在横竖屏之间切换,最简单的办法就是在项目的 ...

  4. Android横竖屏切换及其相应布局载入问题

    第一.横竖屏切换连带载入多屏布局问题: 假设要让软件在横竖屏之间切换.因为横竖屏的高宽会发生转换,有可能会要求不同的布局. 能够通过下面两种方法来切换布局: 1)在res文件夹下建立layout-la ...

  5. Android横竖屏切换总结

    Android横竖屏切换总结(Android资料) Android横竖屏要解决的问题应该就两个: 一.布局问题 二.重新载入问题 1.布局问题:如果不想让软件在横竖屏之间切换,最简单的办法就是在项目的 ...

  6. 我的Android进阶之旅------>Android横竖屏切换总结

    在默认情况下当屏幕从竖评变到横屏时会触发 onConfigurationChanged 事件 在默认情况下会重新加载画面并显示和横屏一样的画面,这样会有2个问题,   * 布局问题,在竖屏 显示的布局 ...

  7. Android横竖屏切换解决方案

    Android横竖屏切换解决方案 首先在Mainifest.xml的Activity元素中加入android:configChanges="orientation|keyboardHidde ...

  8. Android横竖屏切换重载问题与小结

    (转自:http://www.cnblogs.com/franksunny/p/3714442.html) (老样子,图片啥的详细文档,可以下载后观看 http://files.cnblogs.com ...

  9. Android 横竖屏切换小结

    (自己体会:每次横竖屏自动切时都会run Activity的onCreate,即相当后重新进入Activity初始化一样:) 转自:http://www.cnblogs.com/franksunny/ ...

随机推荐

  1. jQuery动画特效笔记

    show().hide().fadeIn().fadeOut().slideDown.slideUp.slideToggle()都接受可选的时长和回调参数(选项对象参数). toggle(durati ...

  2. shell常用命令

    wget wget -P /root url -O rename 实现文件下载指定目录和重命名

  3. 阻塞非阻塞,同步异步四种I/O方式

    举一个去书店买书的例子吧: (同步)阻塞: 你去书店买书,到柜台告诉店员,需要买一本APUE,然后一直在柜台等.(阻塞) 店员拿到书以后交给你. (同步)非阻塞: 你去书店买书,到柜台告诉店员A,需要 ...

  4. MD5 加密的密码在数据库重置

    如果不小心更改掉了项目管理员帐号的密码而又忘了,存在数据库里的密码又是MD5加密后的,这时候怎么办呢? 1. oracle数据库,可以用DBMS_OBFUSCATION_TOOLKIT.MD5 ( i ...

  5. web测试

    1.验证码在不同浏览器兼容性(兼容测试) 2.登录时间cookie及session

  6. 深入研究C语言 第二篇

    1. 程序一: 首先我们研究如下程序: 回答如下问题: 1. 程序运行时n,a,b,c的段地址在哪个寄存器中? 全局变量的存储空间在什么段里?局部变量的存储空间在什么段了?参数在什么段里?函数的返回值 ...

  7. linux系统编程之lseek帮助文档

    通过man 2 lseek可以查看linux中的系统函数lseek函数的帮助文档,为了更好的学习,我把这些重要内容翻译过来 NAME lseek - reposition read/write fil ...

  8. php设计模式--单例模式

    单例模式(Singleton Pattern 单件模式或单元素模式) 单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例. 单例模式是一种常见的设计模式,在计算机系统中,线程池.缓 ...

  9. js高阶函数

    我是一个对js还不是很精通的选手: 关于高阶函数详细的解释 一个高阶函数需要满足的条件(任选其一即可) 1:函数可以作为参数被传递 2:函数可以作为返回值输出 吧函数作为参数传递,这代表我们可以抽离一 ...

  10. House Robber III leetcode 动态规划

    https://leetcode.com/submissions/detail/56095603/ 这是一道不错的DP题!自己想了好久没有清晰的思路,参看大神博客!http://siukwan.sin ...