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 位图尺寸 的相关文章

  • “_加载小部件时出现问题”消息

    加载小部件时 如果找不到资源或其他内容 则会显示 加载小部件时出现问题 就这样 惊人的 此消息保留在主屏幕上 甚至没有说明加载时遇到问题的小部件 我通过反复试验弄清楚了这一点 但我想知道发生这种情况时是否有任何地方可以找到错误消息 Andr
  • TypedArray 的 getResourceId 方法

    我正在阅读有关的文档获取资源Id https developer android com reference android content res TypedArray html getResourceId int 20int 方法 它说
  • 对话框上的 EditText 不返回任何文本

    我太累了 找不到错误 我没有发现任何错误 但我没有从 editText 收到任何文本 请看下面的代码 活动密码 xml
  • GridView 中多次调用 getView()

    我的 Activity 由包含 40 多个元素的 GridView 组成 开始活动后 用户最多可以看到 15 个项目 3 行 每行 5 个项目 我在 getView 正文中编写传递给获取 View 的 LogCat 编号 Log i get
  • Android 自定义视图不能以正确的方式处理透明度/alpha

    我正在绘制自定义视图 在此视图中 我使用两个不同的绘画和路径对象在画布上绘画 我基本上是在绘制两个重叠的形状 添加 Alpha 后 视图中重叠的部分比图像的其余部分更暗 这是不希望的 但我不知道如何解决它 这是我的代码片段 用于展示我如何在
  • Youtube 退出全屏模式 TextView 可见性问题

    我正在全屏模式下播放视频 当我单击后退按钮时 我可以退出全屏模式 但无法显示我在全屏情况下隐藏的 TextView 要在全屏模式下隐藏 textView 我使用以下代码 Override public void onInitializati
  • 如何从 Retrofit2 获取字符串响应?

    我正在做 android 正在寻找一种方法来执行超级基本的 http GET POST 请求 我不断收到错误 java lang IllegalArgumentException Unable to create converter for
  • 以编程方式更新 Android 中的联系人姓名和电话号码

    我创建一个应用程序来读取 更新 删除联系人详细信息 这是更新联系人姓名和电话号码的问题 有人可以帮助我吗 我该怎么做 我正在使用以下代码 但它不起作用 Override public View onCreateView LayoutInfl
  • 如何防止布局的方向改变,而不是整个屏幕/活动的方向改变

    我需要一个子布局 可以是任何布局 例如FrameLayout or RelativeLayout 忽略方向变化并始终保持横向 但不是它的父级或任何其他兄弟布局 视图 它们应该相应地改变它们的方向 因此 我不能使用setRequestedOr
  • finish() 完成活动但它仍然在后台

    我有一个关于 android studio 中活动的 finish 方法的问题 我有这个简单的代码 public class MainActivity extends AppCompatActivity Override protected
  • Web 视图未在 Android 中加载本地 html 文件

    I am integrating html in android I have created a web view But i am not able load local html page Surprisingly web view
  • 如何持续更新MPAndroidChart中的Y轴值

    我希望 LineChart 中的轴能够实时调整其最大值和最小值 当新数据的 Y 值增加 正值和负值 时 像 ResetAxisMaxValue 和 ResetAxisMinValue 这样的函数可以很好地工作 但是 一旦信号再次变低 Y 值
  • 如何使用 Firebase UI 在 recyclerView 中显示时从 Firebase 数据库中的子级引用父级

    我目前正在引用 quote text 子项 这些数据显示在recyclerview using firebase用户界面 我想获取 quote text 的父名称 如何获取 quote text 孩子的父母姓名 When user clic
  • 从 TextView 中显示的数字中删除小数点[重复]

    这个问题在这里已经有答案了 对于我的简单计算器 我将结果显示在TextView 但它总是显示小数 我怎样才能删除它们 这是我的代码 public class MainActivity extends Activity implements
  • Android Studio - 值必须 ≥ 0

    我在 Android Studio 中收到与光标有关的错误 我的代码中有以下行 String data cursor getString cursor getColumnIndex columnIndex columnIndex 被传递到该
  • onClick 未在带有子项的 LinearLayout 上触发

    我有一个自定义的 LinearLayout 和一个较小的 TextView 子级 我希望能够单击 TextView 未覆盖的区域 因此我将 clickable true 和 onclicklistener 设置为 LinearLayout
  • 将图像添加到自定义 AlertDialog

    我制作了一个 AlertDialog 让用户可以从我显示的 4 个选项中选择一个 前 3 个让他们在单击号码时直接拨打号码 第 4 个显示不同的视图 现在看起来是这样的 由于第四个选项的目的是不同的任务 我想让它看起来不同 因为用户可能会感
  • 安卓的限制

    我需要构建一个应用程序 该应用程序拍摄相机图像并将其上传到网络 在网络上进行一些处理并返回真 假 我在这方面遇到了一些问题 希望得到澄清 1 我的应用程序有什么方法可以知道 Android 相机捕获的图像吗 我从这里明白了什么 Androi
  • 在android中跟踪FTP上传数据?

    我有一个运行 Android 的 FTP 系统 但我希望能够在上传时跟踪字节 这样我就可以在上传过程中更新进度条 安卓可以实现这个功能吗 现在 我正在使用org apache common net ftp我正在使用的代码如下 另外 我在 A
  • Android:如何检测手机设置中的语言已更改

    我如何检测我的手机语言是否已更改 例如 Facebook 应用程序将向我们宣布 please wait we preparing your language i used myString Locale getDefault getDisp

随机推荐

  • 如何根据两个字符串列的差异在 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