橫豎屏幕切換生命周期

来源:http://www.cnblogs.com/Renyi-Fan/archive/2017/07/30/7259702.html
-Advertisement-
Play Games

橫豎屏幕切換生命周期 一、簡介 二、代碼 /activityLifeCycle_3Screen/AndroidManifest.xml 核心代碼:android:configChanges="keyboardHidden|orientation|screenSize" com.fry.activit ...


橫豎屏幕切換生命周期

一、簡介

 

二、代碼

/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>

 




您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 序列化 一、serializable和parcelable區別 serializable是java裡面的序列化,parcelable是android裡面的序列化。 serializable序列化之後的文件是放在本地磁碟的,便於持久存儲; parcelable序列化之後的文件是放在記憶體的,速度很快; ...
  • android項目1:打電話 一、效果圖 二、步驟 1、畫好主界面 /call/res/layout/activity_main.xml 2、編好代碼 com.fry.call_1.MainActivity 3、設置好許可權 /call/AndroidManifest.xml ...
  • 一,效果圖。 二,工程圖。 三,代碼。 ViewController.m #import "ViewController.h" #import "MBProgressHUD+MJ.h" @interface ViewController () @end @implementation ViewCon ...
  • Terminating app due to uncaught exception 'CALayerInvalidGeometry', reason: 'CALayer position contains NaN: [nan 40] 棧信息列印如下: "解決方法:" 意思是說程式崩潰是CALayer ...
  • 1.先寫遇到的問題: a.ListView只顯示一個item。 listview只顯示一個item,並且做了listview的點擊事件監聽列印 Bean 對象的屬性和哈希值,發現只有顯示的那個 Bean 對象有屬性值,其他item顯示的 Bean 對象屬性值為null,但是 Bean對象有唯一哈希值 ...
  • Eclipse中快速定位 選中項目,ctrl+h 一、目標 查找如下的頁面屬於哪個activity 二、步驟 1、查找關鍵字 上述頁面中“點我”兩個字比較顯眼,我們可以去android項目中搜索出現“點我”兩個關鍵字的位置 2、搜索 選中項目。ctrl+h 定位 點進去後出現 用同樣的方法在butt ...
  • Android系統源代碼 線上源碼網站 1,http://androidxref.com 2,http://www.grepcode.com/ 3,http://www.androidos.net.cn/ 4,http://androidsource.top/ 5,https://github.co ...
  • ANR異常 一、簡介 解決方法:別在主線程中寫非常耗時的操作 二、代碼實例 點擊之後,不停點擊,亂點 出現anr異常 代碼 /anr/src/anr/MainActivity.java 解決方法:別在主線程中寫非常耗時的操作 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...