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: // ...
随机推荐
- 网上的一个helpdesk流程,将来备用
- Oracle存储包存储及案例
Package左侧文件: create or replace package S02_ZFRZPT_YS_MID is procedure start_cal(strgranularity in va ...
- C++基础梳理--Class、Struct、Union
C++学习一段时间后,反过头来看我发现我忘了一下最基础的东西:strcut(结构体),union(联合体)我学会了类的一堆东西却忘了这两个最基础的: 现在就好好的重新学习一下这里的东西: 一.Clas ...
- Java中有关日期的一些常见运算与应用(Date,DateFormat,SimpleDateFormat)
import java.text.DateFormat; import java.text.DateFormat; import java.text.SimpleDateFormat; import ...
- JS使用合并数组
var arr= [4,5,6]; var arr1 = [7,8,9]; var arr2=[1,2,3]; arr.concat(arr1,arr2); //或者使用Arry.prototype. ...
- HTTPS的学习总结
HTTPS学习总结 简述 HTTPS对比HTTP就多了一个安全层SSL/TLS,具体就是验证服务端的证书和对内容进行加密. 先来看看HTTP和HTTPS的区别 我用AFN访问http下的httpbin ...
- 爬虫框架Scrapy
前面十章爬虫笔记陆陆续续记录了一些简单的Python爬虫知识, 用来解决简单的贴吧下载,绩点运算自然不在话下. 不过要想批量下载大量的内容,比如知乎的所有的问答,那便显得游刃不有余了点. 于是乎,爬虫 ...
- zoj p3780 Paint the Grid Again
地址:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5267 题意:Leo 有一个N*N 的格子,他又有一把魔法刷,这个刷子能把 ...
- hdu 4679 (树形DP)
题意:给一棵树,边的权值都是1,摧毁每条边是有代价的,选择摧毁一条边,把一棵树分成两部分,求出两部分中距离最大的两点的距离,求出距离*代价最小的边,多条的话输出序号最小的. 刚开始理解错题意了,wro ...
- VC++网络高级编程
内含<VC网络高级编程>电子书 及源代码. 第一章.TCP/IP协议.第二章.Winsock网络编程接口:第二章.Visual C++与网络编程:第四章.基本网络编程技术:第五章.Teln ...