Android小部件位图尺寸

13

您好,

我正在编写一个小部件,但不确定在每个屏幕分辨率/密度下使用什么大小的位图作为背景。

根据Android开发者小部件教程:

To find your minimum width and height in density-independent pixels (dp), use this formula:
(number of cells * 74) - 2
Following this formula, you should use 72 dp for a height of one cell, 294 dp and for a width of four cells

如果我的小部件的大小为72dp x 294dp,那么我需要为ldpi、mdpi和hdpi可绘制文件使用什么大小的位图?

此外,我是否需要在清单中添加特定的supports-screens设置?

谢谢(TIA),

-Frink

更新: 我已经在各种大小和颜色的drawable文件夹中制作了棋盘格图案,并尝试了一下。这个密度问题是不是有点迷惑人?

我刚才在一个HVGA、中等密度、320x480的模拟器上截取了屏幕。我的小部件占据的空间大小为320x100,因此我在mdpi文件夹中创建了一个320x100的位图作为我的小部件的背景,在我的模拟器和LG GT540上看起来完美。

对于一个高密度的WVGA854,分辨率为480x854的模拟器。我的小部件的大小为480x150。创建这个大小的背景并将其放置在hdpi文件夹中,在这个模拟器上显示正确。但是我没有硬件来测试它 :-(

更新2: 我想现在我可以更好地解释我的问题了 :-)

如果我有三个设备:

Device1, resolution 320x480, density ldpi
Device2, resolution 320x480, density mdpi
Device3, resolution 400x854, density mdpi

屏幕的物理尺寸可能都不同,但我认为实际尺寸并不重要。

我已经计算出Device1和Device2需要320x100的背景,而Device3需要400x150的背景。那么要使背景在Device2和Device3上正常显示,应该将什么尺寸的背景放入mdpi文件夹中呢?


我也对答案很感兴趣。我的小部件是单元格,我使用的图像尺寸为72px、100px和150px的正方形。不过这只是猜测,所以我很想知道“官方”的数字是多少。 - dave.c
针对您的更新,听起来它正在工作,是吗?还是有问题?另外,当您启动模拟器时,有一个设置(或者可能在模拟器设置中)可以将模拟器缩放到“真实”大小,这可能有助于您进行测试。 - Computerish
电脑语言 - 请查看更新2! 我想以“真实”的大小查看我的模拟器。谢谢。 - FrinkTheBrave
2个回答

10
您只需要将72dp x 294dp转换为实际像素大小,用于 ldpi mdpi hdpi 。该过程在此处已说明:http://developer.android.com/guide/practices/screens_support.html 公式为 pixels = dps *(density / 160),因此在您的情况下,72 dp x 294 dp将等于:
- ldpi(120):54 x 221像素 - mdpi(160):72 x 294像素 - hdpi(240):108 x 441像素 - xhdpi(320):144 x 588像素
根据您的第二次更新进行更新:基于密度的资源旨在确保图形在设备上(大概)具有相同的实际大小。然而,在您的情况下,您不关心实际大小,而是关心背景填充小部件应占用的任何空间。对于大多数背景,您应该能够通过创建Nine Patch图像来解决此问题。Nine Patch将根据所需的大小进行缩放。 http://developer.android.com/guide/topics/graphics/2d-graphics.html#nine-patch http://developer.android.com/guide/developing/tools/draw9patch.html

谢谢,下次有机会我会试一下。 - FrinkTheBrave
在我看来,针对屏幕尺寸而非密度设置可绘制文件夹更合适,这样更符合计算机的逻辑。 - FrinkTheBrave
可绘制文件夹是基于密度而不是屏幕尺寸的。从上面的链接中可以看到一组四个常规密度:ldpi(低)、mdpi(中)、hdpi(高)和xhdpi(超高)。 - Computerish
@Computerish 感谢你的帮助。我想我可能需要为每个屏幕分辨率制作不同大小的背景,并使用代码来确定使用哪一个。 - FrinkTheBrave
你使用了什么样的背景?我不能转换成9-patch吗? - Computerish
显示剩余3条评论

2

2
图标和可绘制设计指南似乎适用于除小部件图像之外的所有内容。因此造成了混淆。 - dave.c

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接