Android橫豎屏最佳實踐

根據我自己的一些瞭解,對橫豎屏有下面幾種嘗試

值得一提的是判斷橫豎屏,網上一般有兩種方式
方式一

	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)}
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章