欢迎访问移动开发之家(rcyd.net),关注移动开发教程。移动开发之家  移动开发问答|  每日更新

横竖屏幕切换生命周期,屏幕切换生命周期

来源: 开发者 投稿于  被查看 46205 次 评论:36

横竖屏幕切换生命周期,屏幕切换生命周期


横竖屏幕切换生命周期

一、简介

 

二、代码

/activityLifeCycle_3Screen/AndroidManifest.xml

 1 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
 2     package="com.fry.activityLifeCycle_3Screen"
 3     android:versionCode="1"
 4     android:versionName="1.0" >
 5 
 6     <uses-sdk
 7         android:minSdkVersion="8"
 8         android:targetSdkVersion="19" />
 9 
10     <application
11         android:allowBackup="true"
12         android:icon="@drawable/ic_launcher"
13         android:label="@string/app_name"
14         android:theme="@style/AppTheme" >
15         <activity
16             android:configChanges="keyboardHidden|orientation|screenSize"
17             android:name="com.fry.activityLifeCycle_3Screen.MainActivity"
18             android:label="@string/app_name" >
19             <intent-filter>
20                 <action android:name="android.intent.action.MAIN" />
21 
22                 <category android:name="android.intent.category.LAUNCHER" />
23             </intent-filter>
24         </activity>
25         <activity android:name="com.fry.activityLifeCycle_3Screen.Activity01" ></activity>
26         <activity android:name="com.fry.activityLifeCycle_3Screen.Activity02" android:theme="@android:style/Theme.Translucent" ></activity>
27     </application>
28 
29 </manifest>
30 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
31     package="com.fry.activityLifeCycle_3Screen"
32     android:versionCode="1"
33     android:versionName="1.0" >
34 
35     <uses-sdk
36         android:minSdkVersion="8"
37         android:targetSdkVersion="19" />
38 
39     <application
40         android:allowBackup="true"
41         android:icon="@drawable/ic_launcher"
42         android:label="@string/app_name"
43         android:theme="@style/AppTheme" >
44         <activity
45             android:configChanges="keyboardHidden|orientation|screenSize"
46             android:name="com.fry.activityLifeCycle_3Screen.MainActivity"
47             android:label="@string/app_name" >
48             <intent-filter>
49                 <action android:name="android.intent.action.MAIN" />
50 
51                 <category android:name="android.intent.category.LAUNCHER" />
52             </intent-filter>
53         </activity>
54         <activity android:name="com.fry.activityLifeCycle_3Screen.Activity01" ></activity>
55         <activity android:name="com.fry.activityLifeCycle_3Screen.Activity02" android:theme="@android:style/Theme.Translucent" ></activity>
56     </application>
57 
58 </manifest>

核心代码:android:configChanges="keyboardHidden|orientation|screenSize"

com.fry.activityLifeCycle_3Screen.MainActivity

  1 package com.fry.activityLifeCycle_3Screen;
  2 
  3 
  4 
  5 
  6 
  7 import com.fry.activityLifeCycle_3Screen.R;
  8 
  9 import android.app.Activity;
 10 import android.content.Intent;
 11 import android.content.res.Configuration;
 12 import android.os.Bundle;
 13 import android.util.Log;
 14 import android.view.View;
 15 import android.view.View.OnClickListener;
 16 import android.widget.Button;
 17 
 18 
 19 
 20 public class MainActivity extends Activity implements OnClickListener{
 21     private Button btn_pause;//创建一个button对象
 22     private Button btn_stop;
 23     private Button btn_offLine;
 24     private String tag=MainActivity.class.getSimpleName(); 
 25      protected void onCreate(Bundle savedInstanceState) {
 26             super.onCreate(savedInstanceState);//父类操作
 27             setContentView(R.layout.activity_main);//引入名为activity_main的界面
 28             btn_pause=(Button) findViewById(R.id.btn_pause);//找id为btn_pause的button
 29             btn_stop=(Button) findViewById(R.id.btn_stop);//找id为btn_stop的button
 30             btn_offLine=(Button) findViewById(R.id.btn_offLine);
 31             btn_pause.setOnClickListener(this);
 32             btn_stop.setOnClickListener(this);
 33             btn_offLine.setOnClickListener(this);
 34             /*
 35              * activity被创建时执行
 36              */
 37             Log.d(tag, "onCreate");
 38             
 39      
 40         }
 41      /*
 42       * activity可见时执行
 43       */
 44      @Override
 45     protected void onStart() {
 46         // TODO Auto-generated method stub
 47         super.onStart();
 48         Log.d(tag, "onStart");
 49     }
 50      
 51      /*
 52       * activity交互时执行
 53       */
 54     @Override
 55     protected void onResume() {
 56         // TODO Auto-generated method stub
 57         super.onResume();
 58         Log.d(tag, "onResume");
 59     }
 60     /*
 61      * activity重新可见时执行
 62      */
 63     @Override
 64     protected void onRestart() {
 65         // TODO Auto-generated method stub
 66         super.onRestart();
 67         Log.d(tag, "onRestart");    
 68     }
 69     /*
 70      * activity暂停时执行
 71      */
 72     @Override
 73     protected void onPause() {
 74         // TODO Auto-generated method stub
 75         super.onPause();
 76         Log.d(tag, "onPause");
 77     }
 78     /*
 79      * activity停止时执行
 80      */
 81     @Override
 82     protected void onStop() {
 83         // TODO Auto-generated method stub
 84         super.onStop();
 85         Log.d(tag, "onStop");
 86     }
 87     /*
 88      * activity销毁时执行
 89      */
 90     @Override
 91     protected void onDestroy() {
 92         // TODO Auto-generated method stub
 93         super.onDestroy();
 94         Log.d(tag, "onDestroy");
 95     }
 96     /*
 97      * activity在配置改变时执行
 98      * 比如横竖屏幕的切换,键盘有无的切换,屏幕大小的改变
 99      */
100     @Override
101     public void onConfigurationChanged(Configuration newConfig) {
102         // TODO Auto-generated method stub
103         super.onConfigurationChanged(newConfig);
104         Log.d(tag, "onConfigurationChanged");
105     }
106     @Override
107     public void onClick(View v) {
108         // TODO Auto-generated method stub
109         switch (v.getId()) {
110         case R.id.btn_pause:
111             Intent intent=new Intent();
112             intent.setClass(this, Activity02.class);
113             startActivity(intent);
114             break;
115         case R.id.btn_stop:
116             Intent intent2=new Intent();
117             intent2.setClass(this, Activity01.class);
118             startActivity(intent2);
119             break;
120         case R.id.btn_offLine://断开状态
121             finish();
122         default:
123             break;
124         }
125     }
126 }

 

三、一直横屏或者一直竖屏

很多手机游戏里面一进去就是横屏,而且不能切换为竖屏,那么怎么样达到这样的效果呢?

 /activityLifeCycle_3Screen/AndroidManifest.xml

 1 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
 2     package="com.fry.activityLifeCycle_3Screen"
 3     android:versionCode="1"
 4     android:versionName="1.0" >
 5 
 6     <uses-sdk
 7         android:minSdkVersion="8"
 8         android:targetSdkVersion="19" />
 9 
10     <application
11         android:allowBackup="true"
12         android:icon="@drawable/ic_launcher"
13         android:label="@string/app_name"
14         android:theme="@style/AppTheme" >
15         <activity
16             android:screenOrientation="portrait"
17             android:name="com.fry.activityLifeCycle_3Screen.MainActivity"
18             android:label="@string/app_name" >
19             <intent-filter>
20                 <action android:name="android.intent.action.MAIN" />
21 
22                 <category android:name="android.intent.category.LAUNCHER" />
23             </intent-filter>
24         </activity>
25         <activity android:name="com.fry.activityLifeCycle_3Screen.Activity01" ></activity>
26         <activity android:name="com.fry.activityLifeCycle_3Screen.Activity02" android:theme="@android:style/Theme.Translucent" ></activity>
27     </application>
28 
29 </manifest>
android:screenOrientation="landscape"横屏
android:screenOrientation="portrait"竖屏

四、如何获取手机是横屏还是竖屏



com.fry.activityLifeCycle_3Screen.MainActivity
  1 package com.fry.activityLifeCycle_3Screen;
  2 
  3 
  4 
  5 
  6 
  7 import com.fry.activityLifeCycle_3Screen.R;
  8 
  9 import android.app.Activity;
 10 import android.content.Intent;
 11 import android.content.res.Configuration;
 12 import android.os.Bundle;
 13 import android.util.Log;
 14 import android.view.View;
 15 import android.view.View.OnClickListener;
 16 import android.widget.Button;
 17 
 18 
 19 
 20 public class MainActivity extends Activity implements OnClickListener{
 21     private Button btn_pause;//创建一个button对象
 22     private Button btn_stop;
 23     private Button btn_offLine;
 24     private String tag=MainActivity.class.getSimpleName(); 
 25      protected void onCreate(Bundle savedInstanceState) {
 26             super.onCreate(savedInstanceState);//父类操作
 27             setContentView(R.layout.activity_main);//引入名为activity_main的界面
 28             btn_pause=(Button) findViewById(R.id.btn_pause);//找id为btn_pause的button
 29             btn_stop=(Button) findViewById(R.id.btn_stop);//找id为btn_stop的button
 30             btn_offLine=(Button) findViewById(R.id.btn_offLine);
 31             btn_pause.setOnClickListener(this);
 32             btn_stop.setOnClickListener(this);
 33             btn_offLine.setOnClickListener(this);
 34             /*
 35              * activity被创建时执行
 36              */
 37             Log.d(tag, "onCreate");
 38             
 39      
 40         }
 41      /*
 42       * activity可见时执行
 43       */
 44      @Override
 45     protected void onStart() {
 46         // TODO Auto-generated method stub
 47         super.onStart();
 48         Log.d(tag, "onStart");
 49     }
 50      
 51      /*
 52       * activity交互时执行
 53       */
 54     @Override
 55     protected void onResume() {
 56         // TODO Auto-generated method stub
 57         super.onResume();
 58         Log.d(tag, "onResume");
 59     }
 60     /*
 61      * activity重新可见时执行
 62      */
 63     @Override
 64     protected void onRestart() {
 65         // TODO Auto-generated method stub
 66         super.onRestart();
 67         Log.d(tag, "onRestart");    
 68     }
 69     /*
 70      * activity暂停时执行
 71      */
 72     @Override
 73     protected void onPause() {
 74         // TODO Auto-generated method stub
 75         super.onPause();
 76         Log.d(tag, "onPause");
 77     }
 78     /*
 79      * activity停止时执行
 80      */
 81     @Override
 82     protected void onStop() {
 83         // TODO Auto-generated method stub
 84         super.onStop();
 85         Log.d(tag, "onStop");
 86     }
 87     /*
 88      * activity销毁时执行
 89      */
 90     @Override
 91     protected void onDestroy() {
 92         // TODO Auto-generated method stub
 93         super.onDestroy();
 94         Log.d(tag, "onDestroy");
 95     }
 96     /*
 97      * activity在配置改变时执行
 98      * 比如横竖屏幕的切换,键盘有无的切换,屏幕大小的改变
 99      */
100     @Override
101     public void onConfigurationChanged(Configuration newConfig) {
102         // TODO Auto-generated method stub
103         super.onConfigurationChanged(newConfig);
104         Log.d(tag, "onConfigurationChanged");
105         int width=getWindowManager().getDefaultDisplay().getWidth();
106         int height=getWindowManager().getDefaultDisplay().getHeight();
107         if(width>height) Log.d(tag, "landscape");
108         else Log.d(tag, "portrait");
109     }
110     @Override
111     public void onClick(View v) {
112         // TODO Auto-generated method stub
113         switch (v.getId()) {
114         case R.id.btn_pause:
115             Intent intent=new Intent();
116             intent.setClass(this, Activity02.class);
117             startActivity(intent);
118             break;
119         case R.id.btn_stop:
120             Intent intent2=new Intent();
121             intent2.setClass(this, Activity01.class);
122             startActivity(intent2);
123             break;
124         case R.id.btn_offLine://断开状态
125             finish();
126         default:
127             break;
128         }
129     }
130 }

/activityLifeCycle_3Screen/AndroidManifest.xml

 1 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
 2     package="com.fry.activityLifeCycle_3Screen"
 3     android:versionCode="1"
 4     android:versionName="1.0" >
 5 
 6     <uses-sdk
 7         android:minSdkVersion="8"
 8         android:targetSdkVersion="19" />
 9 
10     <application
11         android:allowBackup="true"
12         android:icon="@drawable/ic_launcher"
13         android:label="@string/app_name"
14         android:theme="@style/AppTheme" >
15         <activity
16             android:configChanges="keyboardHidden|orientation|screenSize"
17             android:name="com.fry.activityLifeCycle_3Screen.MainActivity"
18             android:label="@string/app_name" >
19             <intent-filter>
20                 <action android:name="android.intent.action.MAIN" />
21 
22                 <category android:name="android.intent.category.LAUNCHER" />
23             </intent-filter>
24         </activity>
25         <activity android:name="com.fry.activityLifeCycle_3Screen.Activity01" ></activity>
26         <activity android:name="com.fry.activityLifeCycle_3Screen.Activity02" android:theme="@android:style/Theme.Translucent" ></activity>
27     </application>
28 
29 </manifest>

 



用户评论