java - 平板电脑和手机之间的应用程序小部件大小不一致

标签 java android android-view homescreen android-appwidget

我正在尝试设计一个应用程序来重现标准应用程序快捷方式主屏幕图标的快捷方式样式,但作为一个小部件。请注意,目前这只是查看标准的 Android 主屏幕。

我使用 Eclipse 的 DDMS -> 设备 View 中的“UI Automator 的转储 View 层次结构”工具进行了以下观察: enter image description here

1 x 1 正方形中给出的空间根据屏幕密度、方向以及手机主屏幕是处于“手机模式”还是“平板电脑模式”而变化(启动 4.x 模拟器,您可以通过背景判断除其他事项外)。屏幕密度影响大小如预期(0.75、1、1.5、2.0 密度因子缩放),但方向和“主屏幕模式”是相当不可预测的。具体来说:


主屏幕上 1x1“正方形”的尺寸

电话模式:

  • 纵向:80dp x 100dp = 4:5 纵横比
  • 横向(如果可用 - 未经过全面测试):106dp x 74dp = 53:37 纵横比

平板电脑模式:

  • 纵向:96dp x 96dp = 1:1 纵横比
  • 横向:96dp x 96dp = 1:1 纵横比

如您所见,几乎没有任何一致性,但这些是主屏幕上“正方形”的尺寸。当查看实际分配给小部件的空间时,它变得更糟(是的,它确实不同于系统快捷方式小部件可用和使用的方形空间):


尺寸赋予 1x1“方形”中的小部件

电话模式:

  • 纵向:80dp x 100dp = 4:5 纵横比
  • 横向(如果可用 - 未经过全面测试):90dp x 58dp = 45:29 纵横比

平板电脑模式:

  • 纵向:72dp x 72dp = 1:1 纵横比
  • 横向:72dp x 72dp = 1:1 纵横比

所以我坚持:

  • 手机和平板电脑模式之间的纵横比不一致
  • 在某些情况下,应用程序小部件的区域比应用程序快捷方式的区域小。因此,小部件的相对大小和感知大小在平板电脑和手机上看起来会有很大不同吗?
  • 较小的区域甚至没有垂直居中,它们大多顶部对齐,顶部边距为 2dp,这意味着它们甚至看起来都没有与相邻的应用程序快捷方式对齐,更不用说尝试生成类似的外观了通过小部件的快捷方式

为了形象化,下图显示了一个默认的系统快捷方式(周围有一个红色框,显示了“方形尺寸 - 系统快捷方式和小部件总是共享的”)。旁边是我的小部件,蓝色突出显示显示 MATCH_PARENT 设置的边界,因此小部件实际上可以在其“正方形”内绘制:

电话 - 端口:enter image description here

平板电脑 - 陆地:enter image description here

平板电脑 - 端口:enter image description here

最重要的一点是,平板电脑上小部件的蓝色区域甚至不包括系统快捷方式绘制文本的空间吗?

有没有人深入了解:

  1. 为什么主屏幕如此不一致?
  2. 为什么没有为应用程序小部件提供与系统快捷方式相同的绘图空间/或者应该是,我做错了什么?
  3. 我应该做其他事情,还是只是接受一个占用所有给定绘图空间的 1x1 小部件,它在平板电脑上看起来比在手机上看起来“更小”(与其周围环境相比) ?

最佳答案

更好的是,许多启动器允许用户自定义网格的大小。根据 design guidelines for App Widgets ,您不能依赖所有设备上的确切尺寸。相反,确定最小宽度和高度并让主屏幕确定布局占用多少个方 block 。

他们确实提供了一些关于您可以期望的单元格最小大小的指导(并且您所有的数字都比看起来大得多),但自定义启动器可能会将这个最小值降低得更低。

我发现最好关注布局中需要的组件(按钮等),然后遵循 Metrics and Grids design guidelines确定您的最小尺寸(注意边距会在 Android 4.0+ 设备上自动添加,但不会在 <4.0 设备上添加)。然后确保您的布局足够动态以填充提供给它们的空间(适本地居中文本等)。请记住,小部件被假定为带框的单个条目,而不是 App Widget Design guidelines 中注明的 float 文本。 .

关于java - 平板电脑和手机之间的应用程序小部件大小不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15170187/

相关文章:

java - 刷新 fragment 内的 View

java - 在 Android 中更改自定义 View 的宽度和高度

java - MotionEvent.obtain(…);不像屏幕上的攻丝

java - 修改文件的特定行 - Java

java - java中FTPClient类的问题

java - OpenCv 模板匹配 - 意外的屏蔽结果

android - 在 Android 中为同一个应用程序创建第二个 zygote 进程

java - 如何根据编辑文本输入字符对数组值进行排序?

java - 第二个微调器不更新值

android - 如何理解和修复下面的 LogCat