判斷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"設定除外 )。