我有一個RelativeLayout
,它有一些控件。在某些屏幕上,可能沒有足夠的空間來放置此佈局以及其他屏幕元素。在這種情況下,我想使用排除某些控件並具有較少填充的替代佈局。當沒有足夠的空間時使用替代佈局
如何以高性能的方式實現此目的?如果較大的佈局絕對不適合,則應該只加載較小的佈局。我不想使用各種screen size qualifiers,因爲佈局是否適合是屏幕寬度和高度以及其他可見控件的函數,並且看起來會變得太複雜。
我有一個RelativeLayout
,它有一些控件。在某些屏幕上,可能沒有足夠的空間來放置此佈局以及其他屏幕元素。在這種情況下,我想使用排除某些控件並具有較少填充的替代佈局。當沒有足夠的空間時使用替代佈局
如何以高性能的方式實現此目的?如果較大的佈局絕對不適合,則應該只加載較小的佈局。我不想使用各種screen size qualifiers,因爲佈局是否適合是屏幕寬度和高度以及其他可見控件的函數,並且看起來會變得太複雜。
我個人認爲你應該使用新的屏幕尺寸限定符。這就是Android的設計,我認爲你應該遵循這些規則。它很可能也會使整個開發過程變得更容易!
但如果你堅持做自己,只有這樣,我能想到的「硬編碼」的,將是這樣的:
第1步:獲取屏幕尺寸
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;
,或者如果你的目標更低的API級別:
Display display = getWindowManager().getDefaultDisplay();
int width = display.getWidth(); // deprecated
int height = display.getHeight(); // deprecated
第2步:根據屏幕尺寸
if(width < value_x_small && height < value_y_small){
setContentView(R.layout.main_small);
} else if(width > value_x_small && height > value_y_small){
setContentView(R.layout.main_large);
} else {
setContentView(R.layout.main_larged);
}
這段代碼可以讓你取決於像素的屏幕尺寸選擇自己的資源選擇一個替代佈局。將px值轉換爲DP(DPI)並使用它們來做出決定可能會更好。您可能還想在當前屏幕方向上添加一個檢查。
你說得對,使用屏幕尺寸限定符是一個更好的主意。在'onMeasure'方法中,我可以檢測到我應該使用較小的佈局,但是在那個時候我沒有辦法改變它。使用屏幕大小限定符時,可能會出現這種情況,我無法最佳選擇較小的佈局,但沒關係。 –
您可以將您的控件作爲單獨的Fragments
來實現,並根據屏幕大小對它們進行定位。這裏有更多關於Fragments and their Design Philosophy的信息。
我知道碎片。這個問題是關於視圖和佈局。 –
你知道什麼是完成佈局所需的最小尺寸(px或dp的高度和寬度)? – Sameer
我不知道確切的高度。有一些控件,包括一些文本視圖(用sp來衡量),這很難確定確切的高度。另外,我寧願留下測量數據並放到操作系統上。 –