Android小部件位图大小

Fri*_*ave 13 android bitmap android-widget android-manifest android-layout

你好,

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

根据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
Run Code Online (Sandbox Code Playgroud)

因此,如果我的小部件是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
Run Code Online (Sandbox Code Playgroud)

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

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

Com*_*ish 10

你只需要72dp X 294dp转化为实际的像素尺寸ldpi,mdpihdpi.这个过程在这里解释:

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