Appwidget大小计算

Appwidget大小计算

问题描述:

它可能是我,但当我根据android页面上给出的公式计算最小应用小部件大小时,我没有得到正确的小部件宽度;计算公式为followsAppwidget大小计算

宽度(N)=(70 XN) - 30

当我想有一个5×1窗口小部件,正确的宽度将是(5 * 70) - 30 = 320dp。然而,当在摩托罗拉Xoom上进行测试时,它会解析为4x1小部件。我已经测试了不同的值,400dp对于Honeycomb的motorola xoom上的5x1似乎很好,但是接下来我会在一个普通的Galaxy Tab上用姜饼进行测试,然后解析为6x1(就像人们所期望的那样)。

所以这里有两个问题;

  • 姜饼和蜂窝之间有什么区别可以忽略?
  • 由于我知道ICS小部件大小不再有小部件之间的填充,这里有一些经验法则吗?

没有太多的设备完全效仿谷歌的建议公式。你最好使用几个xml-xxx文件夹,它们可以指定更精确的minWidth & minHeight,它们对应于不同的屏幕&操作系统。

现在我4只基于OS:

xml  // standard 
xml-v11 // Honeycomb grid 
xml-v14 // ICS's new extra padding 
xml-sw552dp-v14 // ICS tablet padding 

但正如我微调,我可能要添加一些新的文件夹为特定的DPI或屏幕。

快速更新:

只有一些设备使用自动填充。三星&宏达电拥有使用全宽度小部件的自定义用户界面,因此它们会覆盖其启动器上的操作系统填充。

+4

你几乎适合使用3种不同的操作系统大小; widthICS(n)=(70 x n) - 30仅适用于ICS,宽度(n)=(74 x n) - 2适用于姜饼及更早版本。 我在姜饼配方中添加了2 * 8,显然得到了正确的蜂巢尺寸,这并不是真的准确,我猜测,但是可行。 – MrJre 2012-04-24 14:53:25

+0

@MrJre在我的主屏幕小部件中,我使用Honeycomb上的姜饼和早期公式没有问题。尝试模拟器(是的,我有很多的耐心),并与Galaxy Tab 10.1 – 2013-09-18 20:17:17

+1

@radley:“没有太多的设备完全遵循谷歌建议的公式”。那么,我的Nexus 7与Android的股票报告我的4x3 3x3部件。按照文档中的建议,我使用minWidth = 250dp和minHeight = 180dp。如果Google赞助的设备的行为如此,我们可以从其他人那里得到什么...... – 2013-09-18 20:20:03

在ICS中没有填充,有自动填充。你使用的公式是ICS。 对于旧版本还有另外一个公式:

num*74 - 2 
+1

因此368dp应该足够用于根据您的公式使用蜂窝的5x1小部件宽度,除非它没有,因为我仍然获得具有该宽度的4x1小部件:/ – MrJre 2012-04-04 12:48:09

+0

只有一些设备使用自动填充。三星和HTC拥有使用全宽度小部件的自定义用户界面,因此它们会覆盖其启动器上的操作系统填充。 – radley 2012-12-05 22:25:09

在我4X1部件,我用这些尺寸为RES /价值/ dimens.xml

<!-- size = (74 x n) - 2 --> 
<dimen name="appwidget_margin">0dp</dimen> 
<dimen name="appwidget_min_width">294dp</dimen> 
<dimen name="appwidget_min_height">72dp</dimen> 

RES /值-V14/dimens.xml

<!-- size = (70 x n) - 30 --> 
<dimen name="appwidget_margin">0dp</dimen> 
<dimen name="appwidget_min_width">250dp</dimen> 
<dimen name="appwidget_min_height">40dp</dimen> 

我使用widget templates pack作为背景图像。

official guide在res/values/dimens.xml中有默认边距应该是8dp,但是如果我使用8dp,我的小部件比桌面上的标准小部件(谷歌搜索,天气等)要小。那是因为边距V1-V13是建立在背景图片:

enter image description here

我测试的HTC Desire,Nexus S的,仿真器的Android 2.2和Android的模拟器2.3.3。通过上面的模板包背景和配置,我的窗口小部件的大小与其他标准窗口小部件相同,在我测试的所有设备上看起来都不错。

各种发射器也有问题。我推荐这篇文章如下:http://radleymarx.com/blog/app-widget-padding-margins-in-ics-android/

+1

顺便说一句,你推荐的博客文章的作者是在这里写下接受的答案的同一个人;) – 2013-06-26 19:08:14

注意:如果您的目标是预蜂巢(或者在指定honeycomb之前指定minSdkVersion时未指定targetSdkVersion),那么蜂窝网格(和ICS网格)的计算不会生效。缺点是你错过了更新的操作系统功能,但如果你实际上并不需要它们,那么保持目标前蜂窝将节省定制xml文件夹的麻烦。