天天看點

unity android判斷是否橫屏,android 強制設定橫屏 判斷是橫屏還是豎屏

判斷activity 是橫屏還是豎屏

方法 1: //根據裝置配置資訊

Configuration cf= this.getResources().getConfiguration(); //擷取設定的配置資訊

int ori = cf.orientation ; //擷取螢幕方向

if(ori == cf.ORIENTATION_LANDSCAPE){

//橫屏

}else if(ori == cf.ORIENTATION_PORTRAIT){

//豎屏

}

方法2: 通過裝置分辨率還判斷

DisplayMetrics dm = new DisplayMetrics();

mLauncher.getWindowManager().getDefaultDisplay().getMetrics(dm);

mWidth = dm.widthPixels;

mHeight = dm.heightPixels;

if (mHeight > mWidth){//layout port

// 豎屏 .......

}else{//layout land

// 橫屏 .......

}

設定程式 橫屏還是豎屏 有兩種方法 1:通過配置實習  2: 代碼實作

方法2://重寫activity onResume方法

@Override protected void onResume() {

if(getRequestedOrientation()!=ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE){ setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

//ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE :橫

//SCREEN_ORIENTATION_PORTRAIT:豎

}

super.onResume();

}

方法2: 配置androidManifest.xml實作

在activity 中加入 android:screenOrientation="landscape" 資訊即可 該屬性有兩個值 portrait//豎landscape//橫

搞定  快去試試 吧   不過細心的朋友 會發現 咦 當我螢幕的方向 發生變化的時候為啥 activity 的onCreate 怎麼會重新加載呢

原因是: 由于螢幕的旋轉會造出 當然的activity 元素關閉 進而造出activity重新加載 ,顯然這有時候并不是我們要的效果 , 那我們 在看看 如果解決這個問題吧

我們在androidManifest.xml 檔案中 activity 節點加入紅色的 屬性

1、不設定Activity的android:configChanges時,切屏會重新調用各個生命周期,切橫屏時會執行一次,切豎屏時會執行兩次

2、設定Activity的android:configChanges="orientation"時,切屏還是會重新調用各個生命周期,切橫、豎屏時隻會執行一次

3、設定Activity的android:configChanges="orientation|keyboardHidden"時,切屏不會重新調用各個生命周期,隻會執行onConfigurationChanged方法

同時在Activity的Java檔案中重載onConfigurationChanged(Configuration newConfig)這個方法,這樣就不會在布局切換或視窗切換時重載等方法。代碼如下:

@Override

public void onConfigurationChanged(Configuration newConfig)

{

super.onConfigurationChanged(newConfig);

if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE)

{

//land

}

else if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT)

{

//port

}

}

//------------------------------------------------------

關于Android中Activity的橫豎屏切換問題可以通過AndroidManifest.xml檔案中的Activity來配置:

android:screenOrientation=["unspecified" | "user" | "behind" | "landscape" | "portrait" | "sensor" | "nonsensor"]

screenOrientation 用來指定Activity的在裝置上顯示的方向,每個值代表如下含義:

"unspecified"

預設值 由系統來判斷顯示方向.判定的政策是和裝置相關的,是以不同的裝置會有不同的顯示方向.

"landscape"

橫屏顯示(寬比高要長)

"portrait"

豎屏顯示(高比寬要長)

"user"

使用者目前首選的方向

"behind"

和該Activity下面的那個Activity的方向一緻(在Activity堆棧中的)

"sensor"

有實體的感應器來決定。如果使用者旋轉裝置這螢幕會橫豎屏切換。

"nosensor"

忽略實體感應器,這樣就不會随着使用者旋轉裝置而更改了 ( "unspecified"設定除外 )。