Android 屏幕布局仅使用相对大小和填充,而不使用xml文件中的绝对像素定义
我想在Android上布局我的所有屏幕,这样它们就可以与任何屏幕大小和分辨率兼容。所以我认为最好是使用Android 屏幕布局仅使用相对大小和填充,而不使用xml文件中的绝对像素定义,android,xml,Android,Xml,我想在Android上布局我的所有屏幕,这样它们就可以与任何屏幕大小和分辨率兼容。所以我认为最好是使用weight属性使用某种相对规范 我知道如何指定按钮相对于其父按钮的宽度,但是我不知道如何将其应用于布局的所有方面。理想情况下,其背后的逻辑如下所示: horizontalSize = 100% verticalSize = 100% Button1: 20% padding to top <- no idea, how to do this, (only using fixed
weight
属性使用某种相对规范
我知道如何指定按钮相对于其父按钮的宽度,但是我不知道如何将其应用于布局的所有方面。理想情况下,其背后的逻辑如下所示:
horizontalSize = 100%
verticalSize = 100%
Button1:
20% padding to top <- no idea, how to do this, (only using fixed sizes in relative layout)
10% height <- no idea, how to do this
50% width <- with weight attribute
center horizontally <- with layout_centerHorizontal
Button2:
20% padding to Button1 <- only know relative with use of fixed pixels
5% padding to left
30% width
10% height
Button3:
20% padding to Button1
5% padding to right
30% width
10% height
....
horizontalSize=100%
垂直尺寸=100%
按钮1:
20%的顶部填充实现这一点的一种方法(可能不是一种好方法)是使用以下方式以编程方式构建UI:
int width, height;
float scale;
private Display mDisplay;
mDisplay = getApplicationContext().getWindow().getWindowManager().getDefaultDisplay();
width = mDisplay.getWidth();
height = mDisplay.getHeight();
scale = getApplicationContext().getResources().getDisplayMetrics().density;
使用此功能,您可以根据屏幕(宽度和高度)计算尺寸,比例将帮助您实现所有倾角/像素转换:
int dip2pix(int dip)
{
return Math.round(dip * scale);
}
int pix2dip(int pix)
{
return Math.round(pix / scale);
}
首先,您应该尝试在没有绝对像素值的情况下设计布局。而是使用dp/dip单位(与密度无关的像素)。所有布局的基础是中等屏幕尺寸,320x480像素。因此,设计您的布局,使其适合320x480,而不是px使用dp单元,最终在所有屏幕上看起来都一样
按钮1的示例:
20% of 480 = 96, so your padding top value would be 96dp
10% of 480 = 48dp
50% of 320 = 160dp
我不确定320x480,我在其他地方看到它也可能是160。请看这里:320x480是正常比例mdpi手机的合适尺寸是的。然而,现在你需要记住的是,人们将经常使用横向设备,还有一个事实,即开始有一些android设备具有稍微不标准的纵横比。160是mdpi dpi,240是hdpi,因此所有内容都按比例缩放x1.5 320x480=160dp@Zulaxia您是正确的,但在大多数情况下,您将设计一个单独的布局景观无论如何