大家好!我是 android 开发的新手,在按照我想要的方式设置布局时遇到了一些问题。我在 Java 和面向对象的设计方面经验丰富,但我的标记/图形技能可能需要一些工作。
附件是我想要完成的大致内容。这将是一个基本的游戏——红色是 ImageViews,蓝色是按钮,绿色是标签。我需要帮助的事情:
-图像在高像素密度屏幕上非常小。无论设备是什么,我都可以让图像缩放到屏幕的一定百分比吗?我意识到图像可能会失真 - 这没关系。这些图像的质量不太重要。
-我应该如何处理 ImageView 和标签之间的差距?
非常感谢任何其他关于如何使用它的建议或代码!谢谢!
最佳答案
这看起来很简单。请注意,我下面的解决方案全部在 xml 中完成。
首先,您将需要不同屏幕密度的所有资源 - ldpi、mdpi、hdpi、xhdpi、xxhdpi。如果您不针对超小型手机,则可以跳过 ldpi。当然,xxhdpi Assets 将是最高分辨率,而 ldpi(如果您跳过 ldpi,则为 mdpi) Assets 将是最低分辨率。请注意,Android 对不同 dpi 之间的比率有特定的指导方针。也就是说,mdpi 图标是 ldpi 图标大小的“X”倍,等等。您可以用谷歌搜索比率并获得不同密度 (dpi) 的 Assets 。
现在为每种 Assets 类型创建单独的可绘制文件夹。您需要将它们命名为:drawable-ldpi、drawable-mdpi、drawable-hdpi 等。将 ldpi Assets 放在 drawable-ldpi 文件夹中,将 mdpi 放在 drarable-mdpi 等中。
现在,您很可能不需要为不同的屏幕创建不同的布局,但我稍后会讲到。
我的做法是将屏幕分成 4 个相对布局 - 2 个用于红色 ImageView ,1 个用于绿色标签,1 个用于蓝色按钮。使用 android:layoutAlignParentBottom = true 将蓝色相对布局锚定到屏幕底部。现在在蓝色相对布局中,要放置 5 个按钮,我会使用 TableLayout 并将其放在蓝色相对布局中。现在,开始将每个按钮添加为 TableRow 项。它们会自动均匀放置,但我建议给每个按钮一个填充 android:padding = "X dip"(set X)。
现在将绿色标签布局设置在蓝色相对布局之上。在其中添加标签。
现在将红色相对布局(有两个图像)设置在绿色布局和堆栈的顶部,以便底部与绿色相对布局的顶部对齐,顶部与第一行红色相对布局的底部对齐.添加一个 TableLayout 并添加两个图像。为了使它们更靠近顶部,请将 TableLayout 对齐到第二行相对布局的顶部,并提供一个填充以通过您提供的任何倾斜填充来插入图标。
现在,将第一个红色相对布局底部堆叠在第二行相对布局的顶部。使用 android:alignParentTop = true 将第一个红色相对布局的顶部设置为屏幕顶部。现在在此处添加另一个 TableLayout,并将 3 个图像添加为具有适当填充的 TableRow 项。
与锚定在屏幕底部的蓝色相对布局相关的所有操作将确保对称性。并且使用不同密度的图形会适当增加其中 Assets 的大小。
这样您就可以只拥有一个布局文件夹。但是,需要注意的是,在某些屏幕上,它可能看起来不像您想要的那样。如果它确实发生了,那么您可以为它创建一个单独的布局。
关于Android开发-图形问题/XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22394714/