Android屏幕切换

来源:互联网 发布:兼职淘宝模特怎么入行 编辑:程序博客网 时间:2024/05/03 23:39
Android模拟器中,快捷键"Ctrl+F11/F12"可以实现转屏一个很简单的Activity如下:package cn.sohu.com;import android.app.Activity;import android.os.Bundle;import android.util.Log;public class TestActivityActivity extends Activity {    @Override    public void onCreate(Bundle savedInstanceState) {    Log.i("TAG", "onCreate()方法被调用");        super.onCreate(savedInstanceState);        setContentView(R.layout.main);    }@Overrideprotected void onStart() {Log.i("TAG", "onStart()方法被调用");super.onStart();}@Overrideprotected void onRestart() {Log.i("TAG", "onRestart()方法被调用");super.onRestart();}@Overrideprotected void onResume() {Log.i("TAG", "onResume()方法被调用");super.onResume();}@Overrideprotected void onSaveInstanceState(Bundle outState) {Log.i("TAG", "onSaveInstanceState()方法被调用");super.onSaveInstanceState(outState);}@Overrideprotected void onRestoreInstanceState(Bundle savedInstanceState) {Log.i("TAG", "onRestoreInstanceState()方法被调用");super.onRestoreInstanceState(savedInstanceState);}@Overrideprotected void onPause() {Log.i("TAG", "onPause()方法被调用");super.onPause();}@Overrideprotected void onStop() {Log.i("TAG", "onStop()方法被调用");super.onStop();}@Overrideprotected void onDestroy() {Log.i("TAG", "onDestroy()方法被调用");super.onDestroy();}    }

在我们进行切换屏幕的时候,依次调用了如下的方法:
05-10 12:01:16.831: I/TAG(304): onSaveInstanceState()方法被调用
05-10 12:01:16.831: I/TAG(304): onPause()方法被调用
05-10 12:01:16.831: I/TAG(304): onStop()方法被调用
05-10 12:01:16.831: I/TAG(304): onDestroy()方法被调用
05-10 12:01:16.850: I/TAG(304): onCreate()方法被调用
05-10 12:01:16.931: I/TAG(304): onStart()方法被调用
05-10 12:01:16.931: I/TAG(304): onRestoreInstanceState()方法被调用
05-10 12:01:16.931: I/TAG(304): onResume()方法被调用
由此可见:Activity在屏幕切换时先保护现场然后被摧毁,切换后重建此时恢复现场


现在我们要求,在横竖屏幕切换的时候,不销毁和重建Activity
第一步: 在AndroidManifest.xml中的<activity/>添加属性 android:configChanges="orientation|keyboardHidden"
第二步: 重写activity的生命周期方法 onConfigurationChanged(Configuration newConfig)即:
public void onConfigurationChanged(Configuration newConfig) {
  super.onConfigurationChanged(newConfig);
  if(newConfig.orientation==Configuration.ORIENTATION_LANDSCAPE){
       textView.setText("现在为横屏幕");
  }else{
      textView.setText("现在为竖屏幕");
   }  
 }

这样即可达到目的.同理我们可以在此方法中为屏幕的不同方向设置不同的布局文件!!!!!!!!!
即:在res目录下建立layout-land和layout-port目录,相应的layout文件不变且把main.xml复制到这两个目录下面.
layout-land是横屏的layout,layout-port是竖屏的layout


原创粉丝点击