Android屏幕切换

简介: Android模拟器中,快捷键"Ctrl+F11/F12"可以实现转屏 一个很简单的Activity如下: package cn.sohu.
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);
    }

	@Override
	protected void onStart() {
		Log.i("TAG", "onStart()方法被调用");
		super.onStart();
	}

	@Override
	protected void onRestart() {
		Log.i("TAG", "onRestart()方法被调用");
		super.onRestart();
	}

	@Override
	protected void onResume() {
		Log.i("TAG", "onResume()方法被调用");
		super.onResume();
	}

	@Override
	protected void onSaveInstanceState(Bundle outState) {
		Log.i("TAG", "onSaveInstanceState()方法被调用");
		super.onSaveInstanceState(outState);
	}

	@Override
	protected void onRestoreInstanceState(Bundle savedInstanceState) {
		Log.i("TAG", "onRestoreInstanceState()方法被调用");
		super.onRestoreInstanceState(savedInstanceState);
	}

	@Override
	protected void onPause() {
		Log.i("TAG", "onPause()方法被调用");
		super.onPause();
	}

	@Override
	protected void onStop() {
		Log.i("TAG", "onStop()方法被调用");
		super.onStop();
	}

	@Override
	protected 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


相关文章
|
7月前
|
JavaScript Android开发
使用贝叶斯曲线滑动安卓屏幕(autojsPro7)
使用贝叶斯曲线滑动安卓屏幕(autojsPro7)
250 0
|
7月前
|
XML Java Android开发
Android Studio App开发之捕获屏幕的变更事件实战(包括竖屏与横屏切换,回到桌面与切换到任务列表)
Android Studio App开发之捕获屏幕的变更事件实战(包括竖屏与横屏切换,回到桌面与切换到任务列表)
213 0
|
编解码 开发工具 Android开发
Android平台RTSP轻量级服务|RTMP推送摄像头或屏幕之音频接口设计
好多开发者在做Android平台录像或者RTSP轻量级服务、RTMP推送相关模块时,对需要设计哪些常用接口会心存疑惑,本文主要以大牛直播SDK(官方)为例,简单介绍下Android平台直播推送SDK所有音频相关的接口,感兴趣的开发者可以看看。
102 0
|
7月前
|
开发工具 Android开发
rk平台Android12屏幕永不休眠
rk平台Android12屏幕永不休眠
117 1
|
3月前
|
编解码 开发工具 Android开发
Android平台实现屏幕录制(屏幕投影)|音频播放采集|麦克风采集并推送RTMP或轻量级RTSP服务
Android平台屏幕采集、音频播放声音采集、麦克风采集编码打包推送到RTMP和轻量级RTSP服务的相关技术实现,做成高稳定低延迟的同屏系统,还需要有配套好的RTMP、RTSP直播播放器
|
7月前
|
Shell Android开发
ADB更改Android设备屏幕显示方向
ADB更改Android设备屏幕显示方向
376 5
|
7月前
|
Android开发
获取Android设备屏幕大小
获取Android设备屏幕大小
131 3
|
7月前
|
XML Java Android开发
Android系统 添加动态控制屏幕方向、强制APP横竖屏方向
Android系统 添加动态控制屏幕方向、强制APP横竖屏方向
922 1
|
数据采集 开发工具 Android开发
Android平台如何实现屏幕数据采集并推送至RTMP服务器
随着无纸化、智慧教室等场景的普及,好多企业或者开发者开始寻求更高效稳定低延迟的RTMP同屏方案,本文以大牛直播SDK(Github)的同屏demo(对应工程:SmartServicePublisherV2)为例,介绍下如何采集编码推送RTMP数据到流媒体服务器。
194 0
|
7月前
|
存储 XML 编译器
【Android 从入门到出门】第二章:使用声明式UI创建屏幕并探索组合原则
【Android 从入门到出门】第二章:使用声明式UI创建屏幕并探索组合原则
144 3