我有一個手機的Android應用程序的工作,現在我想開發一個版本的平板電腦。根據我所做的研究,我只能爲此保留一個項目,我「只」必須處理不同的屏幕尺寸以及多個佈局和繪圖。平板電腦和手機佈局的活動
但是,我不清楚,如果我有例如2我的主頁佈局(每個設備一個),我必須開發2個活動?或者我可以只有一個活動,我可以檢測哪些佈局被加載,並在if/else分支中執行我的東西?
請注意,我的佈局是非常不同的,例如我使用DrawerLayout的平板電腦版本有一個側邊欄,而我不適用於手機版本。
我有一個手機的Android應用程序的工作,現在我想開發一個版本的平板電腦。根據我所做的研究,我只能爲此保留一個項目,我「只」必須處理不同的屏幕尺寸以及多個佈局和繪圖。平板電腦和手機佈局的活動
但是,我不清楚,如果我有例如2我的主頁佈局(每個設備一個),我必須開發2個活動?或者我可以只有一個活動,我可以檢測哪些佈局被加載,並在if/else分支中執行我的東西?
請注意,我的佈局是非常不同的,例如我使用DrawerLayout的平板電腦版本有一個側邊欄,而我不適用於手機版本。
如果我有例如我的主頁佈局(每個設備一個),我必須開發2個活動嗎?
號如果您有兩個不同版本的佈局(也許是一個在layout/
,另一個在layout-sw600dp/
),系統會自動選擇正確的一個給你。
或者我可以只有一個活動,我可以檢測哪些佈局被加載,並做我的東西在if/else分支?
這大概是通常所做的事情,只有你經常不需要做一個if/else無處不在。
您提到您的平板電腦佈局將使用DrawerLayout
,而您的手機佈局不會。這意味着你可以這樣寫代碼:
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer);
if (drawer != null) {
// set up drawer for tablets
}
的findViewById()
調用將成功返回你的DrawerLayout
當系統選擇了平板電腦的佈局,並在系統中選擇您的手機的佈局將返回null
。
但是,如果有,你知道存在於都您的手機和平板電腦的佈局視圖,你可以直接使用它:
TextView textView = (TextView) findViewById(R.id.text);
textView.setText("hello world");
你並不需要制定每屏支持一個活動(平板電腦/手機),Android操作系統會自動選擇符合設備分辨率的相應XML,但您必須注意視圖綁定,這意味着您必須尊重視圖的視圖類型兩個佈局中的id名稱。 –