根據我自己的一些瞭解,對橫豎屏有下面幾種嘗試
值得一提的是判斷橫豎屏,網上一般有兩種方式
方式一:
int orientation = getRequestOrientation();
if( orientation == ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE ){
//處理橫屏模式
} else if( orientation == ActivityInfo.SCREEN_ORIENTATION_PORTRAIT ){
//處理豎屏模式
}
不知道是什麼原因,反正我在我的電腦上這種方式不得行,這種方式我就直接沒有載考慮了
方式二:
int orientation = getResources().getConfiguration().orientation;
if( orientation == Configuration.ORIENTATION_PORTRAIT ){
//處理豎屏模式
} else if( orientation == Configuration.ORIENTATION_LANDSCAPE ){
//處理橫屏模式
}
方法一: 新建一個layout-land
- 方法:res右鍵new,新建一個Android Resource Package,名稱一般寫成layout-land,Resource type選擇layout。這樣然後如果你想要一個活動(這個活動綁定的layout中的xml文件是a.xml)的橫屏展示,就在layout-land中新建一個相同名字的a.xml,然後在這裏編寫橫屏的界面。
- 注:這種方法很簡單,也相對很容易實現,但是這種方式的話有一個很大的問題,就是涉及到頁面的重新加載,如下圖
這樣就造成了資源的浪費,而且數據如果多的話體驗也不會好。
方法二:重寫onConfigurationChanged()方法(推薦)
- 方法:在AndroidManifest中你想要的實現橫豎屏的活動下面使用onConfigChanges,如下:
<activity
android:name=".MainActivity"
android:configChanges="keyboardHidden|orientation|screenSize">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
這樣在橫豎屏切換的時候頁面就不會重新加載,然後在MainActivity(你想要橫豎屏切換的活動中重寫onConfigurationChanged()方法,判斷橫豎屏來加載不同的佈局,如下:
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
int orientation = getResources().getConfiguration().orientation;
if (orientation == Configuration.ORIENTATION_PORTRAIT) {
//豎屏處理
Log.d(TAG, "--這是豎屏模式");
setContentView(R.layout.activity_main);
} else if (orientation == Configuration.ORIENTATION_LANDSCAPE) {
//橫屏處理
Log.d(TAG, "--這是橫屏模式");
setContentView(R.layout.activity_main_land);
}
}