Android小部件位图大小

时间:2011-01-08 23:28:51

标签: android bitmap android-widget android-layout android-manifest

喂,

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

根据Android Developer App Widgets教程:

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 drawables需要多大的位图?

另外,我的清单中是否需要任何特定的支持屏幕设置?

TIA,

-Frink

更新: 我为每个drawable-文件夹制作了各种尺寸和颜色的棋盘图案并试用了它们。这个密度的东西有点像红鲱鱼吗?

我刚刚完成了我的模拟器的屏幕抓取,运行为HVGA,中等密度,320x480。我的小部件占用的大小是320x100,所以我在mdpi文件夹中创建一个320x100位图作为我的小部件的背景,它在我的模拟器和LG GT540上看起来都很完美。

对于以WVGA854运行的仿真器,高密度,480x854。我的小部件的大小是480x150。创建此大小的背景并将其放在hdpi文件夹中可在此模拟器上正确显示。我没有硬件来测试这个: - (

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

如果我有三台设备:

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

屏幕的物理尺寸可能会有所不同,但我不认为实际尺寸很重要

我已经知道Device1和Device2需要320x100的背景,而Device3需要400x150 那么什么尺寸的背景进入mdpi文件夹才能在Device2和Device3上正确显示?

2 个答案:

答案 0 :(得分:10)

您只需将72dp x 294dp转换为ldpimdpihdpi的实际像素大小。这个过程在这里解释:

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

答案 1 :(得分:2)

Google提供了有关图标大小的好建议:http://developer.android.com/guide/practices/ui_guidelines/icon_design.html

我猜他们也应该适用于自定义小部件。