确定主屏幕的应用程序小部件空间网格大小

2023-12-04

我为平板电脑开发了一个可调整大小的应用程序小部件。该应用程序小部件在大多数带有大多数启动器的设备上运行良好,但是方向存在一些问题,尤其是在纵向模式下的 GO-HD 启动器上。应用程序小部件的高度太大,看起来不太好。

为了解决这个问题,我创建了一种方法来允许用户在应用程序小部件空间中设置任何额外的边距,他想让它看起来不错。例如,当设备处于纵向模式时,他可以设置额外的 20 像素上边距,而在横向模式下则仅设置 5 像素等。

现在我正在创建一个活动来允许用户设置边距。我想制作一个小的预览区域(它将是一个具有相同背景可绘制应用程序小部件的线性布局),以便用户了解应用程序小部件在具有这些边距的主屏幕上的外观。其实我也这么做过,但结果与现实相差甚远。

所以我的问题是:

有什么方法可以获取启动器应用程序用于将应用程序小部件放置在主屏幕上的网格单元的大小(或接近它)?请注意,我知道并非所有启动器都遵循 Android 公式,但我想要的是找到一种方法来计算它的近似值。

- - 编辑 - -

为了更好地理解我的问题,我创建了一个屏幕截图:

shot

首先,应用程序小部件的背景是一个形状 xml 文件,根本没有图形或尺寸。由 Android 将其绘制在可用空间中。在我看来这是最好的 GUI 设计(至少有背景)。现在,在屏幕 1 中,您可以在默认 Android 启动器中看到纵向模式的小部件,它看起来非常漂亮,并且正在重新调整大小。在屏幕 2 和 3 中,您可以在 GO-HD 启动器(横向和纵向模式)中看到它,在此启动器中,它在横向模式下看起来很小,在纵向模式下看起来很大。我可以通过让用户调整边距来解决这个问题,如屏幕 4 中所示。

如果您将预览(屏幕 4 中心的黑暗区域)与 Android 默认启动器中的原始应用程序小部件进行比较,您会发现没有很好的匹配。我要问的是如何向用户呈现更好的预览(最接近实际的应用程序小部件)。

谢谢你,请原谅我的英语


你实施了吗AppWidgetProvider.onAppWidgetOptionsChanged(Context, AppWidgetManager, int, Bundle)?所有行为良好的启动器都应该报告一些有关您放置的小部件的指标,您可以使用以下代码从捆绑包中检索这些指标:

int minwidth_dp = bundle.getInt(AppWidgetManager.OPTION_APPWIDGET_MIN_WIDTH);
int maxwidth_dp = bundle.getInt(AppWidgetManager.OPTION_APPWIDGET_MAX_WIDTH);
int minheight_dp = bundle.getInt(AppWidgetManager.OPTION_APPWIDGET_MIN_HEIGHT);
int maxheight_dp = bundle.getInt(AppWidgetManager.OPTION_APPWIDGET_MAX_HEIGHT);

请注意,这里没有单元格的概念 - 这些指标对应于小部件的实际大小,无论它占用多少单元格。

Stock 启动器将它们映射到不同的方向,如下所示:

最小宽度 -> 纵向宽度
最小高度 -> 景观高度
最大宽度 -> 横向宽度
最大高度 -> 纵向高度

任何在两个方向上保持相同行数和列数并调整单元格大小以适合屏幕的启动器都应该以相同的方式映射它们。请注意,如果您嵌入的启动器对其小部件执行了一些不寻常的操作(仅将它们放置在屏幕的一部分中,或者在不同方向上使用不同数量的行或列),假设这些关系始终成立可能会产生不良结果。

或者,某些启动器可能会以最小值和最大值报告当前方向的指标,并在方向发生变化时用新指标再次呼叫您。但是,如果您只对当前方向感兴趣,这些启动器的行为与库存启动器的行为兼容。

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

确定主屏幕的应用程序小部件空间网格大小 的相关文章

  • 检测正在插入的设备

    我希望能够检测设备是否已插入 我希望能够像查询连接状态一样进行查询 这可能吗 或者我是否需要创建一个监听电池事件的广播接收器 显然是ACTION BATTERY CHANGED http developer android com refe
  • Android:动态更改Listview中的图像

    我有一个由以下 xml 定义的列表视图 我需要切换图像当用户单击任何行时 在运行时会出现在列表中 我怎样才能实现这个目标 非常感谢任何帮助 谢谢 list item xml
  • 在运行时绘制HSV圆

    我想在我的应用程序中有一个颜色选择器 如下所示 我尝试过逐像素填充位图 尝试使用画布drawArc 方法 这两种方式都不利于性能 有任何想法吗 它可能不完全是它应该的样子 与颜色 饱和度等有关 但是这是一些东西 http i1272 pho
  • ImageView Android 内存

    我原来的后续question https stackoverflow com questions 5339883 android app ram usage 有没有一种方法可以在 Android 应用程序中使用 ImageViews 而不使
  • Android - 启用和禁用蓝牙 - SDK 3 (OS 1.5) - 以编程方式?

    我编写了代码来以编程方式启用和禁用各种功能 例如 Wifi 振铃模式 飞行模式 您将在电源切换小部件中看到的所有内容 我还没有找到如何做的一个是蓝牙 看来在 SDK level 3 OS 1 5 中没有漂亮的蓝牙管理器类 有没有人指出关于启
  • 意图过滤器到底是什么?

    我读过很多关于意图过滤器的文章 但我真的无法理解它们到底是做什么的 那么 如果有人可以用一个清晰 的例子向我解释意图过滤器的作用到底是什么 thanks 我认为这是有据可查的here http developer android com g
  • 通过 Intent 从文件管理器中选择文件

    我想做的 我想获取文件字符串形式的路径 我通过 Android 文件管理器选择该路径 我拥有的 Intent intent new Intent Intent ACTION GET CONTENT intent setType startA
  • 具有多个字符串的列表视图

    我正在尝试创建一个包含多个字符串的列表视图 现在我有一个可以实现的功能 while i lt 10 GETS DATA FROM WEBPAGE ETC a DATAFROMWEBPAGE1 b DATAFROMWEBPAGE2 c DAT
  • 通过覆盖滑动调整图像大小不会调整图像大小

    我在用着Glide下载并显示图像 但是 当我尝试调整图像大小时 它不会这样做 我得到随机大小 或者可能是图像的实际大小 这是我用于通过 Glide 加载的代码 Glide with context load file getUrl asBi
  • Android TabLayout:均匀分布

    我正在查看 Google IO 中使用的 Google 类 称为 SlidingTabLayout 在该类中 有一个名为 setDistributeEvenly 的方法 它允许所有这些选项卡在屏幕上均匀分布 每个选项卡具有相同的大小 中心对
  • toArray 与预先确定大小的数组

    使用时ar toArray new String ar size 安卓工作室3 2 1警告预先确定大小的数组并建议空数组 有两种方式将集合转换为数组 使用 预先确定大小的数组 如 c toArray new String c size 或使
  • 如何更改蜂窝中儿童偏好屏幕的背景颜色

    过去几天我一直在寻找解决方案 但找不到 我需要更改右窗格的背景颜色 我知道如何更改左父首选项的颜色 我在清单文件中创建了一个新主题
  • 应用程序运行时相对布局中的元素显示不同

    我有一个ListView在片段内创建 并且它有一个搜索过滤器 问题是 XML 布局在 android studio 中显示正常 但在模拟器或手机中运行时 它显示不同 与我对齐时不正确 并且当我单击SearchView它位于选项卡导航下方 谁
  • Android RxJava 2 JUnit 测试 - android.os.Looper 中的 getMainLooper 未模拟 RuntimeException

    我在尝试为正在使用的演示者运行 JUnit 测试时遇到 RuntimeExceptionobserveOn AndroidSchedulers mainThread 由于它们是纯 JUnit 测试而不是 Android 仪器测试 因此它们无
  • 如何根据受保护的 String doInBackground 方法中 AsyncTask 的结果调用 Toast.makeText() ?

    我从 AsyncTask 中的数据库中获取数据 如果它为空 我想吐司一个警告文本 我在 AsyncTask 中尝试过 但我了解到它不是在工作线程中调用的 这是我的 doInBackground 方法 protected String doI
  • 如何在 Android 中不使用 Intent 裁剪图像

    我正在尝试裁剪图像我使用了下面的代码 意图 i new Intent Intent ACTION PICK android provider MediaStore Images Media EXTERNAL CONTENT URI i pu
  • 如何为部分 Android 活动创建通用代码?

    我的申请中有 14 项活动 这 9 个活动中包含自定义标题栏和选项卡窗格 所以在这里我需要在一个地方编写这个通用代码 而不是在每个包含自定义标题栏和选项卡窗格代码的活动中编写冗余代码 即布局及其活动特定代码 有哪些可能的方法可以做到这一点
  • 如何在 Android 应用程序退出之前进行一些清理?

    当我的 Android 应用程序终止时 是否有某种 onTerminate 方法可以进行一些清理 我想清除一些 SharedPreferences 我有一个活动 它保持几个数字的运行平均值 并将其存储在 SharedPreference 中
  • 在自定义对话框中设置文本视图

    我创建了一个自定义对话框 但无法将文本设置到 java 对话框布局中的文本视图中 并且我的程序崩溃了 我的错误是什么 public class Total CBC extends Activity Override protected vo
  • 找不到与给定名称“@style/Theme.AppCompat.Light”匹配的资源

    我已经研究这个问题几个小时了 从 github 下载存储库后 任何 xml 文件中的唯一错误是 No resource found that matches the given name style Theme AppCompat Ligh

随机推荐

  • 搜索长字符串的 SQL 性能

    我需要将用户代理字符串存储在数据库中 以跟踪和比较不同浏览器之间的客户行为和销售业绩 一个非常简单的用户代理字符串大约有 100 个字符长 决定使用一个varchar 1024 用于在数据库中保存用户代理数据 我知道这有点矫枉过正 但这就是
  • 如何使用存储过程在 SQL Server 中透视表?

    原始输出 期望的输出 检查下面的示例供您参考 或者发布您当前的输出和所需的输出 SELECT INTO tblStock FROM SELECT A PartCode 10 StockQty WHs A Location UNION ALL
  • 使用vbs打开excel工作簿,运行宏并保存工作簿

    我有一个宏 需要每 5 分钟运行一次 我有一个vbs安排宏的文件 该宏正在检查某个文件夹中的新文件 将其信息写入表中 然后将文件移动到存档中 该表与宏位于同一个 Excel 文件中 它运行宏正常 但最后 它询问我是否要保存文件 我需要它来自
  • 使用多列的列表理解

    我有一个 pandas 数据框 其中有一列用于实际值和预测值 我想使用列表理解创建一个新列 当实际值 预测时 该列 1 否则为 0 我知道如何使用 np where 来做到这一点 但我很好奇如何使用列表理解来做到这一点 这可以使用np wh
  • 我可以在保存之前检查下载的图像是否损坏吗?

    在将下载的图像保存到我的文档目录之前 我可以检查它是否已损坏吗 如果是的话请告诉我怎么做 谢谢 UIImage im UIImage alloc initWithData YourNSData UIImageView imview test
  • 在 C# 中,有没有一种方法可以使用反射仅检索内置数据类型属性

    使用反射我想只检索内置数据类型来自 C 对象的属性 有没有比使用一堆更好的方法来做到这一点 或 在一个Where指定我感兴趣的类型的方法 Type sourceType typeof TSource var props sourceType
  • PDFbox 说 PDDocument 已关闭,但未关闭

    我正在尝试使用 PDFbox 填充重复的表单 我正在使用 TreeMap 并用单独的记录填充表单 pdf 表单的格式是这样的 第一页列出六条记录 第二页插入一个静态页面 对于大于 6 个记录的 TreeMap 重复该过程 我得到的错误特定于
  • 在反引号中使用管道

    我尝试使用管道运行命令但收到错误 echo abc echo grep a grep b grep No such file or directory grep grep No such file or directory grep b N
  • 从sqlite数据库读取信息,语法?如何在 html5 webapp 中使用它?

    我正在构建一个 Web 应用程序 并且刚刚开始使用 SQLite 我已经能够创建我的表单 打开我创建的数据库 创建表和我需要的字段 然后将数据输入到字段中 现在 我尝试使用 SELECT 语句读回数据 将其显示在屏幕上并作为列列表 我只是不
  • 我的 Android 应用程序在调试中显示谷歌地图,但在发布到市场时不显示

    我创建了一个使用 Google 地图和 Google Playstore 的应用程序 并使用 Eclipse 和 Android SDK 进行调试 地图显示在我正在运行的设备上 但发 布时它不会显示在应用程序上 只有一个大的灰色屏幕 And
  • 将 IPTC 数据写入文件

    我需要获取一个现有的 jpg 文件并修改其 IPTC 条目中的标题 描述和关键字 这里有几个与此相关的主题 但所有主题要么没有答案 要么只有部分答案 我已经知道如何阅读 IPTC 信息 但需要编辑它们 有人可以阐明这个经过大量研究且鲜为人知
  • 用Scheme语言计算浮点变量

    我想在 Ansys Fluent 中读取多个数据文件 总共 10 个 我写了一个使用方案语言的日志文件 Do count 11 100 count 0 100 gt count 12 000 ti menu load string form
  • 在脚本中创建 sudo 用户,不提示输入密码,更改为用户而不中断脚本

    这就是我试图在脚本中做的事情 它在这里手动工作 但提示我输入密码 我如何能 创建一个新用户 使用 sudo privs 切换到该用户 继续执行脚本的其余部分 sudo adduser centos sudo passwd centos us
  • 新线程,应用程序在阶段关闭后仍在运行

    所以我遵循了这个教程 https www youtube com watch v gyyj57O0FVI 我在 javafx8 中编写了完全相同的代码 public class CountdownController implements
  • 如何睡眠直到特定时间 YYYY-MM-DD HH:MM:SS?

    我一直在考虑做一个睡眠函数 让它休眠直到调用某个日期 我的想法是基于日期 例如 2019 01 20 12 00 00 我还没有真正弄清楚如何开始解决这个问题 我的想法是类似的东西 if there is a date given time
  • 如何在 Android 中播放 YouTube 视频?

    我有一个VideoView我设置了 youtube 视频的 URI 并设置android permission INTERNET但当我想播放视频时收到此消息 你无法播放视频 这个视频播放器的代码片段 mVideoView VideoView
  • ASP.NET 的调度程序?

    我想每天晚上在某种任务或调度程序中运行一些应用程序代码 框架中有内置功能吗 如果没有 有什么简单的第三方框架来进行调度 Thanks 您可以创建控制台应用程序并将其作为计划任务运行 或者 您可以考虑使用 Quartz Net 它是 Java
  • Register-ObjectEvent cmdlet 在 Powershell 上无法正常工作,但在 ISE 上工作

    我正在开发一个 Powershell 脚本来监视文件夹 当创建新项目时 脚本需要将该文件复制到另一个文件夹 我遇到的问题是 当我在 Powershell ISE 中执行它时 它工作得很好 但是当我在 Powershell 上执行它时 它仅在
  • 从 Android 将图片发布到墙上

    我想将图片张贴到墙上 就像我在 Facebook 网页上所做的那样 我尝试过这两种方式 但都不是我想要的 http facebook stackoverflow com questions 5168145 android post pict
  • 确定主屏幕的应用程序小部件空间网格大小

    我为平板电脑开发了一个可调整大小的应用程序小部件 该应用程序小部件在大多数带有大多数启动器的设备上运行良好 但是方向存在一些问题 尤其是在纵向模式下的 GO HD 启动器上 应用程序小部件的高度太大 看起来不太好 为了解决这个问题 我创建了