中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

android如何使用activity鎖定手機橫屏

發布時間:2020-06-02 18:02:03 來源:億速云 閱讀:1112 作者:Leah 欄目:移動開發

這篇文章為大家分享android使用activity鎖定手機橫屏的方法。文章還介紹了activity的其他運用方式,希望大家通過這篇文章能有所收獲。

一、鎖定Activity運行時屏幕方向,如下圖(演示鎖定橫屏):

android如何使用activity鎖定手機橫屏

我們可以通過以下兩種方式實現鎖定Activity運行時屏幕的方向:

(1)通過修改AndroidMainfest.xml配置文件

修改Android/app/mainfests/AndroidMainfest.xml下的配置文件如下:

<activity>節點的android:screenOrientation屬性可以完成該任務(portrait為保持豎屏,landscape為保持橫屏)

 

 1 <manifest xmlns:android="http://schemas.android.com/apk/res/android" 2     package="com.example.administrator.day18"> 3     <application 4         android:allowBackup="true" 5         android:icon="@mipmap/ic_launcher" 6         android:label="@string/app_name" 7         android:supportsRtl="true" 8         android:theme="@style/AppTheme"> 9         <activity android:name=".Main2Activity"10         //添加screenOrientation屬性(portrait為保持豎屏,landscape為保持橫屏)11             android:screenOrientation="landscape">12             <intent-filter>13                 <action android:name="android.intent.action.MAIN" />14 15                 <category android:name="android.intent.category.LAUNCHER" />16             </intent-filter>17         </activity>18     </application>19 </manifest>

 

(2)通過java代碼實現:

 1 import android.content.pm.ActivityInfo; 2 import android.os.Bundle; 3 import android.support.annotation.Nullable; 4 import android.support.v7.app.AppCompatActivity; 5 /** 6  * Created by panchengjia on 2016/12/9. 7  */ 8 public class Test extends AppCompatActivity { 9     @Override10     protected void onCreate(@Nullable Bundle savedInstanceState) {11         super.onCreate(savedInstanceState);12         setContentView(R.layout.activity_main2);13         //添加setRequestedOrientation方法實現鎖定橫屏(portrait為保持豎屏,landscape為保持橫屏)14         setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);15     }16 }

現在第一種需求通過修改配置文件以及java代碼的方式實現,但這里要注意的是當同時在配置文件以及java文件中設置了方向鎖定時,系統會以配置文件設置為準(可以理解為配置文件優先級高于java代碼)

 

二、Activity轉換方向時數據的保存

 

下面我們展示Activity轉換方向時未保存數據的情況:

演示中,我們通過記錄按鈕的點擊次數(土司)來判斷數據是否被保存

android如何使用activity鎖定手機橫屏

我們發現當屏幕(Acticity)由橫屏轉為豎屏時,數據未實現保存,繼續從0開始計數點擊次數。

當我們設置保存數據后,演示情況如下:

android如何使用activity鎖定手機橫屏

保存數據后,點擊數土司會繼續豎屏狀態的數據更新,而不是從零重新開始。

針對數據保存我們同樣有兩種方法實現,分別為在java代碼中使用onSaveInstanceState()方法以及在屬性。

下面我們詳細分析這兩種方法的實現:

 

(1)onSaveInstanceState詳解

 

實現代碼如下(這里寫了Activity的全部生命周期,并打印log用于分析性能):

 1 import android.support.v7.app.AppCompatActivity; 2 import android.os.Bundle; 3 import android.util.Log; 4 import android.view.View; 5 import android.widget.Toast; 6 /** 7  * Created by panchengjia on 2016/12/9. 8  */ 9 public class Main2Activity extends AppCompatActivity {10     int num=1;//初始點擊次數為111     @Override12     protected void onCreate(Bundle savedInstanceState) {13         super.onCreate(savedInstanceState);14         setContentView(R.layout.activity_main2);15         if(savedInstanceState!=null){16             num=savedInstanceState.getInt("data");17         }18         Log.i("Tag","onCreate");19     }20     //設置點擊事件土司記錄數據21     public void show(View v){22         Toast.makeText(this, num++ +"", Toast.LENGTH_SHORT).show();23     }24     @Override25     protected void onSaveInstanceState(Bundle outState) {26         super.onSaveInstanceState(outState);27         outState.putInt("data",num);28         Log.i("Tag","onSaveInstanceState");29     }30     @Override31     protected void onStart() {32         super.onStart();33         Log.i("Tag","onStart");34     }35     @Override36     protected void onResume() {37         super.onResume();38         Log.i("Tag","onResume");39     }40     @Override41     protected void onRestart() {42         super.onRestart();43         Log.i("Tag","onRestart");44     }45     @Override46     protected void onPause() {47         super.onPause();48         Log.i("Tag","onPause");49     }50     @Override51     protected void onStop() {52         super.onStop();53         Log.i("Tag","onStop");54     }55     @Override56     protected void onDestroy() {57         super.onDestroy();58         Log.i("Tag","onDestroy");59     }60 }

功能實現的核心代碼為protected void onSaveInstanceState(Bundle outState)方法。Activity旋轉前后的Log如下:

android如何使用activity鎖定手機橫屏

從Log中可以得知屏幕(Acticity)旋轉時,會銷毀之前的Activity,然后重建旋轉后的Activity。

(2)修改AndroidManifest.xml配置文件

在AndroidManifest.xml中添加configChanges屬性,如下:

 1 <?xml version="1.0" encoding="utf-8"?> 2 <manifest xmlns:android="http://schemas.android.com/apk/res/android" 3     package="com.example.administrator.day18"> 4     <application 5         android:allowBackup="true" 6         android:icon="@mipmap/ic_launcher" 7         android:label="@string/app_name" 8         android:supportsRtl="true" 9         android:theme="@style/AppTheme">10         <activity android:name=".Main2Activity"11         //添加configChanges屬性12             android:configChanges="orientation|keyboard|screenSize">13             <intent-filter>14                 <action android:name="android.intent.action.MAIN" />15 16                 <category android:name="android.intent.category.LAUNCHER" />17             </intent-filter>18         </activity>19         <!--<activity android:name=".Main2Activity"></activity>-->20     </application>21 </manifest>

在java中添加對應的onConfigurationChanged()方法用于Log打印分析,方法本身在功能實現上無實際意義:

 

1 @Override2 public void onConfigurationChanged(Configuration newConfig) {3    super.onConfigurationChanged(newConfig);4    Log.i("Tag","onConfigurationChanged");5 }

屏幕旋轉前后Log如下(演示兩次旋轉):

android如何使用activity鎖定手機橫屏

從Log中可以得知屏幕(Acticity)旋轉時,使用第二種方法保存數據不會銷毀Activity,不用重復的銷毀建立Activity從而達到優化內存性能的目的。建議使用這種方法

上文描述的就是android使用activity鎖定手機橫屏的方法,具體使用情況還需要大家自己動手實驗使用過才能領會。如果想了解更多相關內容,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

二手房| 万荣县| 白城市| 泗水县| 兰州市| 资源县| 东方市| 儋州市| 福清市| 七台河市| 开封市| 临泉县| 分宜县| 洪湖市| 杭锦后旗| 克什克腾旗| 东山县| 彩票| 固始县| 页游| 封丘县| 潼关县| 黄山市| 武功县| 宽城| 汪清县| 高青县| 米林县| 清原| 滦平县| 南投市| 秀山| 千阳县| 文昌市| 鄱阳县| 葵青区| 西安市| 林口县| 丰原市| 河南省| 阳原县|