我有一个RelativeLayout
里面有很多控件。在某些屏幕上,此布局以及其他屏幕元素可能没有足够的空间。在这种情况下,我想使用一种替代布局,它排除了一些控件并且填充较少。
如何以高性能的方式实现这一点?只有当较大的布局绝对不适合时,才应该加载较小的布局。我不想使用各种屏幕尺寸限定符,因为布局是否适合是屏幕宽度和高度以及其他可见控件的函数,这似乎会变得太复杂。
我有一个RelativeLayout
里面有很多控件。在某些屏幕上,此布局以及其他屏幕元素可能没有足够的空间。在这种情况下,我想使用一种替代布局,它排除了一些控件并且填充较少。
如何以高性能的方式实现这一点?只有当较大的布局绝对不适合时,才应该加载较小的布局。我不想使用各种屏幕尺寸限定符,因为布局是否适合是屏幕宽度和高度以及其他可见控件的函数,这似乎会变得太复杂。
我个人认为您应该使用新的屏幕尺寸限定符。这就是 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) 并使用它们来做出决定可能会更好。您可能还想添加对当前屏幕方向的检查。
您可以单独实现控件Fragments
并根据屏幕大小定位它们。这是有关Fragments 及其设计理念的更多信息。