android+4.4.2+横屏,Android 横竖屏和布局问题

在这里我做了一个小test,之前看过关于这方面的东西,到后来我才真正的遇到项目的时候,不得已才要去真正的熟悉里面的流程。

这里我贴测试源码:

TestActivity.java

package cn.com.hrmdemo;

import Android.app.Activity;

import android.content.res.Configuration;

import android.os.Bundle;

import android.widget.Toast;

public class TestActivity extends Activity {

@Override

protected void onCreate(Bundle arg0) {

System.out.println("------ TestActivity onCreate------");

Toast.makeText(this, "onCreate。。。", Toast.LENGTH_SHORT).show();

super.onCreate(arg0);

setContentView(R.layout.test_linearlayout);

}

@Override

protected void onRestoreInstanceState(Bundle savedInstanceState) {

System.out.println("------ TestActivity onRestoreInstanceState------");

Toast.makeText(this, "onRestoreInstanceState。。。", Toast.LENGTH_SHORT).show();

// TODO Auto-generated method stub

super.onRestoreInstanceState(savedInstanceState);

}

@Override

protected void onStart() {

System.out.println("------ TestActivity onStart------");

Toast.makeText(this, "onStart。。。", Toast.LENGTH_SHORT).show();

// TODO Auto-generated method stub

super.onStart();

}

@Override

protected void onRestart() {

System.out.println("------ TestActivity onRestart------");

Toast.makeText(this, "onRestart。。。", Toast.LENGTH_SHORT).show();

// TODO Auto-generated method stub

super.onRestart();

}

@Override

protected void onResume() {

System.out.println("------ TestActivity onResume------");

Toast.makeText(this, "onResume。。。", Toast.LENGTH_SHORT).show();

// TODO Auto-generated method stub

super.onResume();

}

@Override

protected void onSaveInstanceState(Bundle outState) {

System.out.println("------ TestActivity onSaveInstanceState------");

Toast.makeText(this, "onSaveInstanceState。。。", Toast.LENGTH_SHORT).show();

// TODO Auto-generated method stub

super.onSaveInstanceState(outState);

}

@Override

protected void onPause() {

System.out.println("------ TestActivity onPause------");

Toast.makeText(this, "onPause。。。", Toast.LENGTH_SHORT).show();

// TODO Auto-generated method stub

super.onPause();

}

@Override

protected void onStop() {

System.out.println("------ TestActivity onStop------");

Toast.makeText(this, "onStop。。。", Toast.LENGTH_SHORT).show();

// TODO Auto-generated method stub

super.onStop();

}

@Override

protected void onDestroy() {

System.out.println("------ TestActivity onDestroy------");

Toast.makeText(this, "onDestroy。。。", Toast.LENGTH_SHORT).show();

// TODO Auto-generated method stub

super.onDestroy();

}

@Override

public void onConfigurationChanged(Configuration newConfig) {

System.out.println("------ TestActivity onConfigurationChanged------");

Toast.makeText(this, "屏幕转变了。。。", Toast.LENGTH_SHORT).show();

// TODO Auto-generated method stub

super.onConfigurationChanged(newConfig);

}

}

------------------------------------------------------上面是源码----------------------------------------------------------

下面看看demo的配置和运行的效果是怎样

这个横竖屏的配置主要是在AndroidManiFest.xml,就是Android App 的清单文件:

android:configChanges="想要配置的方式"

>

在你的activity 里面配置你的横竖屏切换方式

1). 什么都不做配置的情况下

a.正常情况下:

07-24 08:43:59.519: I/System.out(18726): ------ TestActivity onCreate------

07-24 08:43:59.609: I/System.out(18726): ------ TestActivity onStart------

07-24 08:43:59.619: I/System.out(18726): ------ TestActivity onResume------

b.切换横屏情况下:

07-24 08:51:01.359: I/System.out(18936): ------ TestActivity onPause------

07-24 08:51:01.379: I/System.out(18936): ------ TestActivity onSaveInstanceState------

07-24 08:51:01.389: I/System.out(18936): ------ TestActivity onStop------

07-24 08:51:01.399: I/System.out(18936): ------ TestActivity onDestroy------

07-24 08:51:01.429: D/memalloc(18936): /dev/pmem: Unmapping buffer base:0x5bb4d000 size:4608000 offset:3072000

07-24 08:51:01.429: D/memalloc(18936): /dev/pmem: Unmapping buffer base:0x5c8c5000 size:16531456 offset:14995456

07-24 08:51:01.449: I/System.out(18936): ------ TestActivity onCreate------

07-24 08:51:01.579: I/System.out(18936): ------ TestActivity onStart------

07-24 08:51:01.579: I/System.out(18936): ------ TestActivity onRestoreInstanceState------

07-24 08:51:01.599: I/System.out(18936): ------ TestActivity onResume------

c.再切换回竖屏的情况下:

07-24 08:51:42.669: I/System.out(18936): ------ TestActivity onPause------

07-24 08:51:42.689: I/System.out(18936): ------ TestActivity onSaveInstanceState------

07-24 08:51:42.699: I/System.out(18936): ------ TestActivity onStop------

07-24 08:51:42.729: I/System.out(18936): ------ TestActivity onDestroy------

07-24 08:51:42.759: D/memalloc(18936): /dev/pmem: Unmapping buffer base:0x5c8c5000 size:4608000 offset:3072000

07-24 08:51:42.759: D/memalloc(18936): /dev/pmem: Unmapping buffer base:0x5cd2a000 size:10797056 offset:9261056

07-24 08:51:42.789: I/System.out(18936): ------ TestActivity onCreate------

07-24 08:51:42.859: I/System.out(18936): ------ TestActivity onStart------

07-24 08:51:42.859: I/System.out(18936): ------ TestActivity onRestoreInstanceState------

07-24 08:51:42.879: I/System.out(18936): ------ TestActivity onResume------

2)配置android:configChanges="orientation|keyboardHidden" (4.0以前)

a.正常情况下:

07-24 08:54:05.059: I/System.out(18936): ------ TestActivity onCreate------

07-24 08:54:05.199: I/System.out(18936): ------ TestActivity onStart------

07-24 08:54:05.219: I/System.out(18936): ------ TestActivity onResume------

b.切换横屏情况下:

07-24 08:54:25.909: I/System.out(18936): ------ TestActivity onPause------

07-24 08:54:25.919: I/System.out(18936): ------ TestActivity onSaveInstanceState------

07-24 08:54:25.929: I/System.out(18936): ------ TestActivity onStop------

07-24 08:54:25.949: I/System.out(18936): ------ TestActivity onDestroy------

07-24 08:54:25.979: D/memalloc(18936): /dev/pmem: Unmapping buffer base:0x5c7c5000 size:19603456 offset:18067456

07-24 08:54:25.979: D/memalloc(18936): /dev/pmem: Unmapping buffer base:0x5da77000 size:4608000 offset:3072000

07-24 08:54:26.019: I/System.out(18936): ------ TestActivity onCreate------

07-24 08:54:26.069: I/System.out(18936): ------ TestActivity onStart------

07-24 08:54:26.079: I/System.out(18936): ------ TestActivity onRestoreInstanceState------

07-24 08:54:26.079: I/System.out(18936): ------ TestActivity onResume------

c.再切换回竖屏的情况下:

07-24 08:55:02.099: I/System.out(18936): ------ TestActivity onPause------

07-24 08:55:02.109: I/System.out(18936): ------ TestActivity onSaveInstanceState------

07-24 08:55:02.119: I/System.out(18936): ------ TestActivity onStop------

07-24 08:55:02.129: I/System.out(18936): ------ TestActivity onDestroy------

07-24 08:55:02.139: D/memalloc(18936): /dev/pmem: Unmapping buffer base:0x5c7c5000 size:4608000 offset:3072000

07-24 08:55:02.139: D/memalloc(18936): /dev/pmem: Unmapping buffer base:0x5cc30000 size:9216000 offset:7680000

07-24 08:55:02.179: I/System.out(18936): ------ TestActivity onCreate------

07-24 08:55:02.249: I/System.out(18936): ------ TestActivity onStart------

07-24 08:55:02.289: I/System.out(18936): ------ TestActivity onRestoreInstanceState------

07-24 08:55:02.309: I/System.out(18936): ------ TestActivity onResume------

发觉上面的结果是跟网上的朋友说的不是一样的,原来是有区别的。

到后来去网上搜索了一下资料发觉,到了。4.0以后。要加上这样的配置才会使Activity的生命周期不会重新被调用

3)配置android:configChanges="keyboardHidden|orientation|screenSize" (4.0以后)

a.正常情况下:

07-24 08:54:05.059: I/System.out(18936): ------ TestActivity onCreate------

07-24 08:54:05.199: I/System.out(18936): ------ TestActivity onStart------

07-24 08:54:05.219: I/System.out(18936): ------ TestActivity onResume------

b.切换横屏情况下:

07-24 09:08:21.639: I/System.out(19533): ------ TestActivity onConfigurationChanged------

c.再切换回竖屏的情况下:

07-24 09:08:21.639: I/System.out(19533): ------ TestActivity onConfigurationChanged-----

总结:要想Activity在横竖屏切换的时候不重新加载生命周期的重要方法,一定要加上配置

4.0之前

android:configChanges="orientation|keyboardHidden"

>

4.0之后

android:configChanges="keyboardHidden|orientation|screenSize"

>

------------------------------------------------------常用设置---------------------------------------------------------

1.如果你的app指定要横屏显示的话

android:screenOrientation="portrait"

>

2.如果你的app指定要竖屏显示的话

android:screenOrientation="landscape"

>

64位Ubuntu 11.10下Android开发环境的搭建(JDK+Eclipse+ADT+Android SDK详细) http://www.linuxidc.com/Linux/2013-06/85303.htm

0b1331709591d260c1c78e86d0c51c18.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/268502.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Silverlight 3 全系列开发工具发布

Silverlight 3 全系列开发工具发布Expression Studio 3Make your vision real with the four professional tools in Microsoft Expression Studio 3. Design for standards-based web sites, rich desktop experiences or Silverlight. Includes Expression Blend™ SketchFl…

KVM安装

KVM安装 1.查看系统是否支持,grep -E (vmx|svm) /proc/cpuinfo --color 2.安装kvm管理,yum install -y qemu-kvm libvirt 3.安装虚拟机工具,yum install -y virt-install 使用: 启动 service libvirtd start 启动后创建virbr0,192…

Android实现打开本地文件,Android 打开本地文件(示例代码)

Android 打开本地的文件,目前来说,其实很常见。而且现在有手机版的office了。查看office的全家桶就更加方便。首先要知道的是,Android 打开本地文件是根据类型打开的,也就是根据文件的 MIME 类型来确定如果不知道是什么类型&#…

mysql配置文件注解

#BEGIN CONFIG INFO#DESCR: 4GB RAM, 只使用InnoDB, ACID, 少量的连接, 队列负载大#TYPE: SYSTEM#END CONFIG INFO## 此mysql配置文件例子针对4G内存# 主要使用INNODB#处理复杂队列并且连接数量较少的mysql服务器# # 将此文件复制到/etc/my.cnf 作为全局设置,# mysql-data-dir/…

8 线性表-循环队列-顺序存储

这几天犹豫了一下要不要上机实现数据结构的代码 一轮复习已经结束了 第二次看还是觉得光看书实在太无感了 于是决定来上机 顺便加深印象 即使考不上 记录一些基础的知识 以后找工作也有用…… 好 就这样决定咧!不能偷懒! 1、循环队列: 实际上…

Android九点阵手势识别,能量黑科技模块八-九:两路按键颜色手势魔块

8. 两路按键魔块模块一共有两路硅胶按键,可以检测按键是否按下。当按键按下时,对应按键背后的红色LED会亮,并且返回触发信号,按键按下事件为真。另外按键键帽上可安装乐高十字插销。8.1. 详细介绍8.2. 参数介绍支持电压&#xff1…

Nhibernate教程2(3)

2)含有关系的表的情况 含有关系的表指的是像学生这样,除了保存学生的基本信息,还希望把选课信息保存到学生的类中。这样情况下不能用软件来辅助产生对应的类和XML,这是NHibernate中唯一需要费脑筋学的地方。学生表对应的类和XML如…

新概念4-41

Lesson 41 Training elephants 训练大象 Two main techniques have been used for training elephants, which we may respectively the tough and the gentle. The former method simply consists of setting an elephant to work and beating him until he does what …

RC和RR级别下的InnoDB快照读有什么不同

首先简介mysql四种隔离级别: 未提交读(READ UNCOMMITED)脏读 已提交读 (READ COMMITED)简称(RC) 不可重复读 可重复读(REPEATABLE READ)简称(RR ) 可串行化&#xff…

html5属性详解,HTML5中的download属性详解

一、download属性是个什么?如果我们想实现点击上面的下载按钮下载一张图片,你会如何实现?我们可能会想到一个最简单的方法,就是直接按钮a标签链接一张图片,类似下面这样:下载但是,想法虽好&…

[新手及懒人适用]轻松恢复误Ghost的硬盘

首先感谢51CTO有这么好的网络平台,很荣幸本周成为推荐博客。在高兴的同时,倍感压力,毕竟,51CTO看得见的看不见的大牛太多,而自己需要完善的东西还太多太多............好在,我会坚持自己最初在51CTO写博的初…

c:forEach 如何输出序号

关键在于<c:forEach>的varStatus属性&#xff0c;具体代码如下&#xff1a; <table width"500" border"0" cellspacing"0" cellpadding"0"> <tr> <th>序号</th> <th>姓名</th> <…

HTML练习4制作京东登录页,day4 CSS属性和京东登录

1、盒子练习.div1{background-color: darkcyan;width: 100px;height: 100px;margin-left: 20px;margin-top: 20px;/*float: left;*/text-indent: 4em;}.f1{text-indent: 2em;}按时发达复活节啊奥斯卡房间里卡就分手了空间撒 阿发阿发阿发艾弗森adhfhkash发货咖啡来看哈反抗咯说…

Hibernate常见问题集锦

Hibernate常见问题集锦1问&#xff1a;Hibernate初始化时总是报错&#xff1a;java.lang.NoClassDefFoundErrorHibernate初始化时出现出错代码&#xff1a;java.lang.NoClassDefFoundError: net/sf/ehcache/CacheException答&#xff1a;这是新手常见问题。是因为使用默认设置时…

网络运维调查报告

网络运维 是IT管理的核心和重点部分&#xff0c;也是内容最多、最繁杂的部分&#xff0c;该阶段主要用于IT部门内部日常运营管理&#xff0c;涉及的对象分成两大部分&#xff0c;即IT业务系统和运维人员&#xff0c;该阶段的管理内容又可细分为七个子系统&#xff1a; 设备管理…

html css外接修改无效,HTML外部引用CSS文件为什么会不生效

HTML外部引用CSS文件为什么会不生效发布时间&#xff1a;2021-01-14 09:41:22来源&#xff1a;亿速云阅读&#xff1a;112作者&#xff1a;小新这篇文章将为大家详细讲解有关HTML外部引用CSS文件为什么会不生效&#xff0c;小编觉得挺实用的&#xff0c;因此分享给大家做个参考…