Android Widget 位图尺寸

2024-01-12

Hallo,

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

根据Android 开发者应用程序小部件 http://developer.android.com/guide/topics/appwidgets/index.html#MetaData教程:

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,

-Frink

更新: 我为每个可绘制文件夹制作了一些不同尺寸和颜色的棋盘图案并进行了尝试。这个密度问题是不是有点转移注意力?

我刚刚完成了以 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 上正确显示?


您只需将 72dp x 294dp 转换为实际像素大小即可ldpi, mdpi, and hdpi。该过程解释如下:

http://developer.android.com/guide/practices/screens_support.html 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/topics/graphics/2d-graphics.html#nine-patch

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android Widget 位图尺寸 的相关文章

随机推荐

  • 如何根据两个字符串列的差异在 pandas 中创建新列?

    如何在 pandas 中创建一个新列 该新列是由字符串组成的其他两列的差异的结果 我有一个标题为 Good Address 的列 其中包含 123 Fake Street Apt 101 等条目 另一列标题为 Bad Address 其中包
  • C# Lambda 和“this”变量范围

    我想知道我是否可以使用thisC lambda 中的关键字 尽管实际上我know我可以 但我想确保这不是一件坏事 或者稍后会产生微妙的问题 阅读规则后lambda 的变量范围 http msdn microsoft com en us li
  • 在 Google Colaboratory 中长时间运行的会话结束后,如何使用剩余的 epoch 来训练模型?

    我正在使用 Google Colab 训练 60 个时期的 3D 卷积神经网络 但是当达到 57 个时期时 我的会话就结束了 重新连接后 训练从 epoch 1 开始 在 Google Colaboratory 上的会话结束后 我应该如何在
  • 使用 Maven / Eclipse 停止自动构建

    我们使用 Maven 和 Eclipse 我们有一个多模块项目 相当大 Eclipse Maven 集成似乎会自行决定何时对构建依赖模块做出反应 这很痛苦 我已经打开了自动构建 但这似乎没有做出任何改变 有一些操作 例如 删除资源或启动模块
  • 奇怪的Python类型“文本”?

    我使用库 suds 与 SOAP 服务器进行通信 请求成功完成后 我收到答复 answer client invoke RetrieveBLABLAObject modelthings 这个答案是请求对象的许多不同字段的结构 每个字段都是由
  • 命令行中“程序&”是什么意思?

    我需要使用套接字开发客户端和服务器程序 我的程序应该从命令行获取端口号 我看到一个例子 上面写着 myprogram 2454 我想知道那是什么 的意思是那里 这意味着在后台启动该进程 http tldp org LDP abs html
  • 将数据发送到 Google Cloud ML 自定义预测例程时出现未知错误

    我正在尝试在 AI Platform 上编写自定义 ML 预测例程 以从客户端获取文本数据 进行一些自定义预处理 将其传递到模型中 然后运行模型 我能够成功地将这段代码打包并部署到谷歌云上 但是 每次我尝试从 node js 向它发送请求时
  • 在 CVS 中移动文件而不重置修订号

    最近我一直在源代码树中移动源文件 例如 将一堆文件放入一个公共程序集中 我一直在这样做 从 CVS 中删除文件 然后将其再次添加到新位置 问题是文件的修订号重置回 1 1 有没有一些简单的方法可以在不重置号码的情况下移动物品 我可能应该提到
  • 将 ConstraintLayout 中的所有子宽度与最宽子宽度匹配,宽度 = 换行内容

    ConstraintLayout 功能强大 但有时也很棘手 我想实现一个布局ConstraintLayout这可以很容易地实现LinearLayout 蓝色区域是父constraintLayout 红色部分是LinearLayout 我想通
  • 如何从 R 发送电子邮件

    我想从 R 发送电子邮件 这是我到目前为止所拥有的 library sendmailR from lt email protected cdn cgi l email protection to lt email protected cdn
  • 在 R 中处理非常大的数据集

    我正在处理一个非常大的数据集 我正在从 Oracle 数据库下载该数据集 数据框大约有 2100 万行和 15 列 我的操作系统是 windows xp 32 位 我有 2GB RAM 短期内我无法升级我的内存或操作系统 它正在工作 我需要
  • 根据条件向数据框中添加新行 python pandas

    需要根据条件向数据帧添加新行 当前数据框 在此数据框中有 4 列 我想做的就是检查 时间 列 检查每个夜班午夜 12 点的最接近值 并添加两个新行作为 11 59 59 和 00 00 01与最近的数据点相同的值 例如 03 01 晚的最接
  • WebSocket - 发送第二条消息后,我得到:服务器不得屏蔽它发送到客户端的任何帧

    我成功收到第一条消息 但第二条 相同的消息 我收到错误 服务器不得屏蔽发送给客户端的任何帧 它只有一个客户 private void RunWebSocketListener int websocket port 8996 TcpListe
  • IntelliJ IDEA - Android JDK 不起作用

    我刚刚安装了 IntelliJ IDEA 10 0 0 2 社区版我已经安装了 Android SDK C Program Files Android android sdk windows 我想创建一个新的android项目 所以我创建一
  • WPF 在 XAML 继承类中使用 override 属性

    我有一个小问题 找不到任何解决方案 也许这是 Visual Studio 中的问题 我创建了一个从 Image 继承的新类 然后我重写 Source 属性 class GifImage Image public new ImageSourc
  • 更新属性文件中的属性值而不删除其他值[重复]

    这个问题在这里已经有答案了 内容First properties name elango country india phone 12345 我要变化country from india to america 这是我的代码 import j
  • 如何真正理解 robocopy 返回码 2

    我正在努力解决如何处理有时会返回 2 的部署脚本robocopy 命令和输出如下 它返回 2 这意味着 额外文件 总体而言 这似乎是成功的 我应该接受 2 作为成功吗 ROBOCOPY Robust File Copy for Window
  • MySQL DELETE 查询的解释

    有没有办法解释DELETE使用 MySQL 进行查询 就像我们可以解释的那样SELECT query 从 MySQL 5 6 3 开始 EXPLAIN 提供有关 SELECT DELETE INSERT REPLACE 和 UPDATE 语
  • UINavigationBar 的自定义高度或 UINavigationBar 的替代方案

    我有一个带有导航栏的 viewController 我想增加导航栏的高度 但我不能 我已经搜索过增加导航栏的高度 但没有取得任何成功 是否有任何增加导航栏或任何其他库 替代方案的高度 不允许直接更改 It is not permissibl
  • Android Widget 位图尺寸

    Hallo 我正在编写一个小部件 但不确定使用什么大小的位图作为每个屏幕分辨率 密度的背景 根据Android 开发者应用程序小部件 http developer android com guide topics appwidgets in