Android开发-图形问题/XML

Android开发-图形问题/XML,android,xml,Android,Xml,大家好!我是android开发的新手,在按照我想要的方式设置布局时遇到了一些问题。我对Java和面向对象设计很有经验,但我的标记/图形技能需要一些工作 附件大概就是我想要完成的。这将是一场基本的比赛——红色是图像视图,蓝色是按钮,绿色是标签。我需要帮助的事情: -在高像素密度的屏幕上,图像非常小。我是否可以使图像缩放到屏幕的某个百分比,无论设备是什么?我意识到图像可能会失真-这没关系。这些图像的质量并不太重要 -我应该如何处理ImageView和标签之间的间隙 非常感谢您对如何处理此问题的任何其

大家好!我是android开发的新手,在按照我想要的方式设置布局时遇到了一些问题。我对Java和面向对象设计很有经验,但我的标记/图形技能需要一些工作

附件大概就是我想要完成的。这将是一场基本的比赛——红色是图像视图,蓝色是按钮,绿色是标签。我需要帮助的事情:

-在高像素密度的屏幕上,图像非常小。我是否可以使图像缩放到屏幕的某个百分比,无论设备是什么?我意识到图像可能会失真-这没关系。这些图像的质量并不太重要

-我应该如何处理ImageView和标签之间的间隙


非常感谢您对如何处理此问题的任何其他建议或代码!谢谢

您可以为不同的屏幕密度创建不同的布局文件夹(布局、大布局等),并在每个布局中相应地给出imageview大小(宽度和高度)。请按照以下链接了解更多信息:


这似乎很简单。注意我下面的解决方案都是用xml完成的

首先,您将需要不同屏幕密度的所有资产:ldpi、mdpi、hdpi、xhdpi、xxhdpi。如果你不是针对超小型手机,你可以跳过ldpi。当然,xxhdpi资产将是最高分辨率,而ldpi(如果跳过ldpi,则为mdpi)资产将是最低分辨率。请注意,Android对不同DPI之间的比率有特定的指导原则。也就是说,mdpi图标是ldpi图标大小的“X”倍,等等。您可以通过谷歌搜索比率,获得不同密度(dpi)的资产

现在为每种资产类型创建单独的可绘制文件夹。您需要将它们命名为:drawable ldpi、drawable mdpi、drawable hdpi等。将ldpi资产放在drawable ldpi文件夹中,将mdpi放在drawable mdpi中,等等

现在,很可能您不需要为不同的屏幕创建不同的布局,但我将在稍后介绍

我的方法是将屏幕分成4个相对布局——2个用于红色图像视图,1个用于绿色标签,1个用于蓝色按钮。使用android:layoutAlignParentBottom=true将蓝色相对布局锚定到屏幕底部。现在在蓝色相对布局中,为了放置5个按钮,我将使用TableLayout并将其放入蓝色相对布局中。现在,开始将每个按钮添加为TableRow项。它们将自动均匀地放置,但我建议使用android:padding=“X dip”(设置X)为每个按钮添加填充

现在将绿色标签布局设置在蓝色相对布局的顶部。在其中添加标签

现在,将红色相对布局(有两个图像)设置在绿色布局的顶部,堆栈为,以便底部与绿色相对布局的顶部对齐,顶部与第一行红色相对布局的底部对齐。添加一个TableLayout并添加两个图像。要使图标更接近顶部,请将TableLayout与第二行相对布局的顶部对齐,并提供一个填充,以通过您提供的任何倾斜填充来推动图标

现在,将第一个红色相对布局底部堆叠在第二行相对布局的顶部。使用android:alignParentTop=true将第一个红色相对布局的顶部设置为屏幕顶部。现在在这里添加另一个TableLayout,并将3个图像添加为具有适当填充的TableRow项目

所有与固定在屏幕底部的蓝色相对布局相关的操作都将确保对称性。并且使用不同的密度图形将适当增加内部资产的大小

这样,您就可以只使用一个布局文件夹。然而,有一个警告是,在某些屏幕上,它可能不是你想要的样子。如果确实发生了,则为其创建单独的布局

I recommend you to use linear layout with weights. as weights divide each screen equally
and as you are using HD graphics,no need to create diffrent folders.but if you want to
 use different folders the you have to use layout folder for screen size upto 5.1 inch
 and layout-sw600dp-land and port for 7"  and layout-sw720dp-land and port for 10 inch.