activity横屏竖屏的切换
来源:互联网 发布:手机淘宝淘抢购 编辑:程序博客网 时间:2024/06/04 18:57
原理:
其实总结起来,我们可以得到以下的一些结论
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 {@Overrideprotected 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);}}@Overrideprotected void onStart() {super.onStart();System.out.println("onStart()");}@Overrideprotected void onResume() {super.onResume(); System.out.println("onResume()");}@Overrideprotected void onPause() {super.onPause(); System.out.println("onPause()");}@Overrideprotected void onStop() {super.onStop(); System.out.println("onStop()");}@Overrideprotected void onDestroy() {super.onDestroy(); System.out.println("onDestroy()");}@Overrideprotected void onRestart() {super.onRestart();System.out.println("onRestart()");}@Overrideprotected void onSaveInstanceState(Bundle outState) {super.onSaveInstanceState(outState);outState.putInt("page", 50);System.out.println("onSaveInstanceState()");}@Overrideprotected 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);}/** * 对横屏和竖屏进行一些特定的处理 */@Overridepublic 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("现在是竖屏");}}@Overridepublic 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横屏竖屏的切换
- Activity之间的切换
- Activity的切换
- Activity的切换动画
- Activity的切换动画
- activity的切换方式
- Activity切换的动画
- Activity的切换动画
- Activity的切换动画
- viewfilper的切换动画,activity切换动画
- activity的切换问题(activity与栈)
- activity的切换问题(activity与栈)
- 不同Activity之间的切换
- 不同Activity之间的切换
- Activity 之间的切换动画
- Android中Activity的切换
- Activity之间的切换动画
- Activity页面切换的效果
- 最小圆覆盖
- configure 后调用libtool不能编译出依赖静态库文件的解决方法
- delphi散点知识
- Html5支持获取用户地理位置信息
- RedHat/CentOS发行版本号及内核版本号对照表
- activity横屏竖屏的切换
- Hibernate中包的一些介绍
- Hibernate源码包分析
- java的几种对象(PO,VO,DAO,BO,POJO)解释 (转载)
- Kombu Queue
- 二进制、八进制、十六进制与十进制之间的转换
- Linux下批量替换多个文件中的字符串的简单方法
- Android开发的童鞋们!福利来啦!!参与「2013 eoe移动开发者」线上活动,获红米手机大奖!
- 使用github上的开源框架SlidingMenu环境的搭建,以及getSupportActionBar方法不能找到的问题