Appwidget大小计算

MrJ*_*Jre 16 android android-3.0-honeycomb android-2.3-gingerbread android-4.0-ice-cream-sandwich android-appwidget

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

width(n)=(70 xn) - 30

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

这里有两个问题;

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

pet*_*ejl 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>
Run Code Online (Sandbox Code Playgroud)

对于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>
Run Code Online (Sandbox Code Playgroud)

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

官方指南中写道,res/values/dimens.xml中的默认边距应为8dp,但如果我使用8dp,则我的窗口小部件比桌面上的标准窗口小部件小(谷歌搜索,天气等).多数民众赞成是因为v1-v13的保证金是在背景图片中构建的:

在此输入图像描述

我在HTC Desire,Nexus S,模拟器Android 2.2和模拟器Android 2.3.3上进行了测试.使用上面的模板包背景和配置,我的小部件的大小与其他标准小部件相同,并且在我测试的所有设备上看起来都很好.

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


rad*_*ley 10

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

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

xml       // standard
xml-v11   // Honeycomb grid
xml-v14    // ICS's new extra padding
xml-sw552dp-v14  // ICS tablet padding
Run Code Online (Sandbox Code Playgroud)

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

快速更新:

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

  • 你使用3种不同的OS大小是非常正确的; widthICS(n)=(70 xn) - 30仅为ICS,width(n)=(74 xn) - 2适用于Gingerbread及更早版本.我在Gingerbread配方中添加了2*8,显然得到了正确的Honeycomb尺寸,我觉得这不是很准确,但有效. (4认同)