Android 小部件位图大小

Posted

技术标签:

【中文标题】Android 小部件位图大小【英文标题】:Android Widget Bitmap Sizes 【发布时间】:2011-06-05 22:12:00 【问题描述】:

你好,

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

根据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 可绘制对象需要多大尺寸的位图?

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

TIA,

-弗林克

更新: 我为每个可绘制文件夹制作了一些不同尺寸和颜色的棋盘图案并尝试了它们。这种密度的东西是不是有点偏题了?

我刚刚截屏了运行为 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 那么什么尺寸的背景进入 mdpi 文件夹才能在 Device2 和 Device3 上正常显示呢?

【问题讨论】:

我也对答案感兴趣。我的小部件是单个单元格,我使用的图像尺寸是边长为 72 像素、100 像素和 150 像素的正方形。不过这些只是猜测,所以我很想知道“官方”数字。 响应您的更新,听起来它正在工作,对吧?还是有问题?此外,当您启动模拟器时,有一个设置(或者可能在模拟器设置中)将模拟器缩放到“真实”大小,这可能有助于您进行测试。 计算机 - 请参阅 Update2!我正在查看“真实”尺寸的模拟器,ta 【参考方案1】:

您只需将 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 像素

针对您的第二次更新进行更新:基于密度的资源旨在确保图形在不同设备上的实际尺寸(大致)相同。但是,在您的情况下,您并不关心实际大小,您关心的是背景填充了它应该为小部件填充的任何空间。您应该能够通过创建九个补丁图像来处理大多数背景的这个问题。九个补丁将根据需要的大小进行缩放。

http://developer.android.com/guide/topics/graphics/2d-graphics.html#nine-patch

http://developer.android.com/guide/developing/tools/draw9patch.html

【讨论】:

干杯,下次有机会我会试试的 @FrinkTheBrave 请告诉我们你的进展情况 计算机,在我看来,可绘制文件夹应该与屏幕尺寸相关,而不是密度? 可绘制文件夹基于密度,而不是屏幕大小。 A set of four generalized densities: ldpi (low), mdpi (medium), hdpi (high), and xhdpi (extra high) 来自上面的同一链接。 基于密度的文件夹的想法是无论屏幕的密度如何,都可以使图形显示相同的大小。但是,如果您愿意,可以根据屏幕大小定义 XML 布局。【参考方案2】:

Google 对图标大小有很好的建议:http://developer.android.com/guide/practices/ui_guidelines/icon_design.html

我想它们也应该适用于自定义小部件。

【讨论】:

图标和可绘制设计指南似乎适用于所有除了小部件图像。因此混乱。

以上是关于Android 小部件位图大小的主要内容,如果未能解决你的问题,请参考以下文章

wordpress数据库大小小部件

android小部件中的绑定器事务失败[重复]

小部件更新的 RemoteViews 超出最大位图内存使用错误

如何在android中正确设置一个大的小部件图标

Qt 如何从 QVector 中的数据创建位图并将其显示在小部件上?

将位图动态放入小部件时失败的活页夹事务