activity横屏竖屏的切换
原理:
其实总结起来,我们可以得到以下的一些结论
1、当内存不足(不容易模拟)、切屏时会调用onSaveInstanceState()、onRestoreInstanceState()方法
对于onSaveInstanceState()方法
1)用于保存临时性数据,在创建下一个Activity是调用
2)在onPause()方法之前调用(这个很容易理解)
3)保存的数据可以在onRestoreInstanceState()方法、onCreate()方法中取到
4)数据的传递是这样子的。通过putInt(key,value) 存 [当然还可以用其他类型] ,
用过getInt(key)来取
2、横竖屏切换的时候:
竖屏到横屏:activity首先被销毁,在创建一个新的activity
横屏到竖屏:activity首先被销毁,再创建一个新的activity,再把该activity销毁,再创建一个新的activity.(是由于输入法的影响)
1)如果希望在切屏时只销毁1次activity和只创建一次activity,则可以在<activity>配上android:configChanges="orientation"
2)如果希望切屏时保留原来的哪一个activity不变,则可以这样配置
android:configChanges="orientation|keyboardHidden"
1、MainActivity
package com.njupt.activitylife; import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.content.res.Configuration;
import android.view.Menu;
import android.view.View; public class MainActivity extends Activity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main); System.out.println("onCreate"); if(savedInstanceState != null){
int page = savedInstanceState.getInt("page");
System.out.println("onCreate() page: " +page);
}
} @Override
protected void onStart() {
super.onStart(); System.out.println("onStart()");
} @Override
protected void onResume() {
super.onResume(); System.out.println("onResume()");
} @Override
protected void onPause() {
super.onPause(); System.out.println("onPause()");
} @Override
protected void onStop() {
super.onStop(); System.out.println("onStop()");
} @Override
protected void onDestroy() {
super.onDestroy(); System.out.println("onDestroy()");
} @Override
protected void onRestart() {
super.onRestart(); System.out.println("onRestart()");
} @Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState); outState.putInt("page", 50); System.out.println("onSaveInstanceState()");
} @Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState); int page = savedInstanceState.getInt("page");
System.out.println("onRestoreInstanceState() page: " + page);
} public void get(View v){ Intent intent = new Intent(this,Main2Activity.class); startActivity(intent);
} /**
* 对横屏和竖屏进行一些特定的处理
*/
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig); if(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE){
System.out.println("现在是横屏");
}else if(newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
System.out.println("现在是竖屏");
}
} @Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
} }
2、AndroidManifest.xml
<activity
android:name="com.njupt.activitylife.MainActivity"
android:label="@string/app_name"
android:configChanges="orientation|keyboardHidden">
<intent-filter>
<action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
activity横屏竖屏的切换的更多相关文章
- 【转】Android 模拟器横屏竖屏切换设置
http://blog.csdn.net/zanfeng/article/details/18355305# Android 模拟器横屏竖屏切换设置时间:2012-07-04 来源:设计与开发 ...
- android界面横屏和竖屏的切换
关于android横屏和竖屏的切换网上给了很多种.但是有些介绍的方法都是在android旧版本上. 我现在把握用到的情况写下来用于备忘: android 版本:4.0 - 4.4 要求:android ...
- Android——横屏和竖屏的切换,以及明文密码的显示
查看API文档: android.content.pm.ActivityInfo 在手机的使用中,我们要根据不同的需求来改变屏幕的显示方向,一般在浏览信息时是竖屏,在玩游戏的时候就要切换到横屏. ...
- Android横屏竖屏切换的问题
Android横屏竖屏切换的问题 http://blog.sina.com.cn/s/blog_77c632410101790w.html
- vue手机端横屏竖屏切换
1.建一个空白的vue文件,添加上如下代码 data() { this.$router.go(-1) return {} } 2.在需要横屏竖屏切换的页面中加入如下代码: beforeMount( ...
- Android之横屏竖屏显示问题
1.採用不同的布局文件 在res下创建目录layout-land 在该目录下写入的layout(xml文件)横屏的时候系统自己主动选择显示的layout 同理: 在res下创建目录layout-por ...
- js 横屏 竖屏 相关代码 与知识点
<!DOCTYPE html> <html> <head> <title></title> </head> <body&g ...
- HTML5中判断横屏竖屏
在移动端中我们经常碰到横屏竖屏的问题,那么我们应该如何去判断或者针对横屏.竖屏来写不同的代码呢. 这里有两种方法: 一:CSS判断横屏竖屏 写在同一个CSS中 1 2 3 4 5 6 @media s ...
- javascript判断手机旋转横屏竖屏
javascript判断手机旋转横屏竖屏 // 横屏竖屏函数 function orientationChange(){ switch(window.orientation) { case 0: // ...
随机推荐
- Onvif协议
ONVIF致力于通过全球性的开放界面标准来推进网络视频在安防市场的应用,这一接口界面标准将确保不同厂商生产的网络视频监控产品具有互通性.2008年11月,论坛正式发布了ONVIF第一版规范ONVIF核 ...
- 门面(Facade)模式--医院,保安系统实例
门面(Facade)模式 http://www.cnblogs.com/zhenyulu/articles/55992.html
- poj 1715 Hexadecimal Numbers 排列组合
/** 大意: 给定16进制数的16个字母,,求第k大的数,,要求数的长度最大为8.,并且每个数互不相同. 思路: 从高到低挨个枚举,每一位能组成的排列数 ,拿最高位来说,能做成的排列数为15*A(1 ...
- WebRTC–getUserMedia & Canvas
下面是一个使用getUserMedia接口和Canvas的drawImage方法实现的截图功能(截取视频中的一帧). 基本思路是这样子的: getUserMedia获取一个MediaStream, s ...
- 在Windows环境下使用MinGW编译Qt 4.8.6
1.修改环境变量工具推荐:Rapid Environment Editor.官网:http://www.rapidee.com/ 修改前请先备份当前的环境变量.然后: (1)检查系统变量path,删除 ...
- LINUX下使用crontab进行RMAN备份实验
之前写了脚本,手动执行可以,使用crontab总是无法运行成功,今天下午花了两个小时实验,完成如下: 注意事项:脚本完成首先手动执行,确定可以正常执行. 在crontab中使用,要注意以下几点: 1. ...
- C++一些注意点之异常处理
几篇文章:(1)http://blog.csdn.net/daheiantian/article/details/6530318 (2)http://blog.chinaunix.net/uid-21 ...
- swift菜鸟入门视频教程-07-闭包
本人自己录制的swift菜鸟入门,欢迎大家拍砖.有什么问题能够在这里留言. 主要内容: 闭包表达式(Closure Expressions) 跟随闭包(Trailing Closures) 值捕获(C ...
- 【JUnit4.10源码分析】5 Statement
假设要评选JUnit中最最重要的类型.或者说核心,无疑是org.junit.runners.model.Statement.Runner等类型看起来热闹而已. package org.junit.ru ...
- javascript 生成页面轮播元素
<html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"> ...