在QVGA屏幕上调整图像大小

时间:2013-04-08 14:22:30

标签: android android-layout android-drawable

我有一个带登录屏幕的应用。在那个屏幕上,我有de company徽标。

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

然后我添加了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仿真器上看到图像时(例如),它会向我显示一个巨大的图像。

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

感谢和抱歉我的英语不好

2 个答案:

答案 0 :(得分:1)

这类问题通常非常具体。

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

使用此设置进行测试后, IF 会出现无法对齐的内容,您将为该屏幕尺寸(小型,大型等)创建一个dimens.xml,并仅添加您实际需要的尺寸改变。

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

答案 1 :(得分: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);

请注意,调整大小是自动完成的,但如果您让操作系统处理它,有时您无法获得所需的结果。

这不完全是你提出的要求,但如果你决定采用只有一个可绘制的路线,这有望避免一些令人头疼的问题。