0

我有一个带有登录屏幕的应用程序。在那个屏幕上,我有公司的标志。

首先,我制作了一个布局文件夹和一个可绘制文件夹。我测试过,一切正常。

然后我添加了 4 个布局文件夹(普通、大、小和 xlarge)和 4 个可绘制文件夹(hdpi、ldpi、mdpi、xhdpi)。我刚刚将我的 logo.png 和 main_layout.xml 复制到每个文件夹(这是错误的,但只是为了测试)。当然,当我在每个不同的屏幕尺寸模拟器上测试应用程序时,它会显示徽标图像位置错误或变形(有时更大或更小,有时位置不好,等等)。没错,因为我没有创建不同的 png 文件,也没有针对不同的尺寸调整布局。

因此,下一步是与设计区域交谈并要求每个密度的 4 个 png 文件并检查“4 个布局”。

一旦我修复了 4 个 png 文件和布局,我使用 4 个模拟器再次测试了应用程序(一个用于普通屏幕,另一个用于大屏幕,另一个用于超大屏幕,一个用于小屏幕)。仍然不能像我想要的那样工作。

在某些情况下,logo.png 它显示的比我想要的更大。在其他方面它显示得更小。我不明白我必须做什么。我使用 wrap_content,我创建了 4 个可绘制文件夹(hdpi、ldpi、mdpi、xhdpi),我有 4 个不同大小的 logo.png 文件。

但是当我在 QVGA Emulator 上看到图像时(例如),它会显示一个巨大的图像。

如果不同的布局是针对屏幕尺寸的,而不同的 pngs 是针对不同的密度,我必须做什么才能使用小或大的图像(png)?

感谢并为我糟糕的英语感到抱歉

4

2 回答 2

1

这种类型的问题通常是非常具体的。

但一般的做法是只有一个布局。此布局中的任何尺寸值都放在 /values/ 文件夹内的 dimens.xml 文件中。创建 4 个 .png(ldpi、mdpi、hdpi、xhdpi)并确保它们的比例正确!(仔细检查 Android 开发者网站以查看正确的比例。

并且在您使用此设置进行测试后,如果有一些不对齐的内容,您将为该屏幕尺寸(小、大等)创建一个dimens.xml,并且只添加您实际想要更改的尺寸。

测试前不要添加所有尺寸或所有布局。从基本开始并根据需要添加更多资源通常更简单。

于 2013-04-08T14:36:38.937 回答
0

我遇到了类似的问题,可能对您有帮助,也可能对您没有帮助。我试图读取某个大小的 mjpeg 流,但它从来没有完全适合我调整它的窗口。问题归结为许多设备的像素密度与操作系统报告的不完全相同。例如,操作系统可能报告 mdpi 为 160 dpi,但设备的实际 dpi 为 164。因此,如果您希望使用 1 个非常大的 *.png 并在运行时调整它的大小,请不要使用“标准”缩放因素(即 1、2、4 等),而是使用

float factor = getResources().getDisplayMetrics().density;

//To get width/height of the View 
int width = view.getWidth(); //a fixed width would be preferred over this
int realwidth = (int) Math.round(width/factor);

请注意,调整大小是自动完成的,但有时如果让操作系统处理它,您不会得到想要的结果。

这并不完全是您所要求的,但如果您决定走只有一个可绘制的路线,这有望避免一些头痛。

于 2013-04-08T14:52:51.433 回答