Appwidget大小计算

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

宽度(n)=(70×n) – 30

当我想要一个5×1小部件时,正确的宽度将是(5 * 70) – 30 = 320dp。 然而,当在摩托罗拉Xoom上进行testing时,它会parsing为4×1小部件。 我已经testing了不同的值,400dp对于Honeycomb的motorola xoom上的5×1似乎很好,但是我会在一个普通的Galaxy Tab上用姜饼进行testing,然后parsing为6×1(就像我们预料的那样)。

所以这里有两个问题。

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

Solutions Collecting From Web of "Appwidget大小计算"

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

现在我四个完全基于操作系统:

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

但是,当我微调时,我可能不得不为特定的dpis或屏幕添加一些新的文件夹。

快速更新:

只有一些设备使用自动填充。 三星和HTC有自定义用户界面,使用全宽度的部件,所以他们覆盖其发射器的操作系统填充。

在我的4×1小部件中 ,我使用res / values / dimens.xml的这些尺寸:

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

res / values-v14 / dimens.xml

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

我使用小部件模板包为背景图像。

在官方指南中写道,res / values / dimens.xml中的默认边距应该是8dp,但是如果我使用8dp,则我的小部件比桌面上的标准小部件(谷歌search,天气等)更小。 这是因为v1-v13的保证金是在背景图片中build立的:

在这里输入图像说明

我testing了HTC Desire,Nexus S,模拟器Android 2.2和模拟器Android 2.3.3。 使用上面的模板包背景和configuration,我的小部件的大小与其他标准小部件相同,在我testing的所有设备上看起来都不错。

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

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

 num*74 - 2 

注意:如果您的目标是蜂窝前(或蜂巢之前指定minSdkVersion时不指定targetSdkVersion),蜂窝网格(和ICS网格)计算不会生效。 这一点的缺点是你错过了较新的操作系统function,但如果你不需要它们,那么保持目标前蜂窝将节省定制的XML文件夹的麻烦。