1

我有一个RelativeLayout里面有很多控件。在某些屏幕上,此布局以及其他屏幕元素可能没有足够的空间。在这种情况下,我想使用一种替代布局,它排除了一些控件并且填充较少。

如何以高性能的方式实现这一点?只有当较大的布局绝对不适合时,才应该加载较小的布局。我不想使用各种屏幕尺寸限定符,因为布局是否适合是屏幕宽度和高度以及其他可见控件的函数,这似乎会变得太复杂。

4

2 回答 2

2

我个人认为您应该使用新的屏幕尺寸限定符。这就是 Android 的设计方式,我认为您应该遵循这些规则。它很可能还会使整个开发过程变得更加容易!


但是如果你坚持自己做,我能想到的“硬编码”它的唯一方法是这样的:

第一步:获取屏幕尺寸

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 为单位)选择自己的资源。将 px 值转换为 DP (DPI) 并使用它们来做出决定可能会更好。您可能还想添加对当前屏幕方向的检查。

于 2012-08-22T08:31:57.830 回答
0

您可以单独实现控件Fragments并根据屏幕大小定位它们。这是有关Fragments 及其设计理念的更多信息。

于 2012-08-22T08:17:21.753 回答