Appwidget大小计算

时间:2012-04-04 09:34:38

标签: android android-4.0-ice-cream-sandwich android-3.0-honeycomb android-appwidget android-2.3-gingerbread

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

  

width(n)=(70×n)-30

当我想要一个5x1小部件时,正确的宽度将是(5 * 70) - 30 = 320dp。然而,当在motorola Xoom上测试它时,它解析为4x1小部件。我已经测试了不同的值,400dp对于带有Honeycomb的motorola xoom上的5x1似乎很好,但后来我在常规Galaxy Tab上用Gingerbread测试它然后它解析为6x1(就像人们期望的那样)。

这里有两个问题;

  • 我可以俯瞰Gingerbread和Honeycomb有什么区别?
  • 由于我知道ICS小部件大小不再在小部件之间有填充,这里有一些经验法则吗?

4 个答案:

答案 0 :(得分:24)

在我的 4x1小部件中,我将这些维度用于 res / values / 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 / values-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 :(得分:10)

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

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

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

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

快速更新:

只有部分设备使用自动填充。三星&amp; HTC具有使用全宽小部件的自定义UI,因此它们会覆盖其发射器上的OS填充。

答案 2 :(得分:4)

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

num*74 - 2

答案 3 :(得分:1)

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