1x1的Android小部件在WXGA720屏幕上显示为2x2的小部件

9

我正在创建一个 1x1 的 Android 小部件。我已经为每个屏幕密度设计了以下图像:

ldpi  (120 DPI) = 72 * (120 / 160) == 54 x 54 pixels
mdpi  (160 DPI) = 72 * (160 / 160) == 72 x 72 pixels
hdpi  (240 DPI) = 72 * (240 / 160) == 108 x 108 pixels
xhdpi (320 DPI) = 72 * (320 / 160) == 144 x 144 pixels

我的小部件规格:

<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android" 
    android:minWidth="72dip"
    android:minHeight="72dip"
    android:updatePeriodMillis="1000"
    android:initialLayout="@layout/widget">
</appwidget-provider>

在WVGA800屏幕(hdpi)上,小部件为1x1。 在WXGA800屏幕(mdpi)上,小部件为1x1。 在WXGA720屏幕(xhdpi)上,小部件为2x2。
有人能指出这里有什么问题吗?

1
只是确认一下,您的应用程序小部件最终会有288x288像素吗?顺便说一句,“updatePeriodMillis”为“1000”将无效,因为最短时间为30分钟。 - CommonsWare
是的,我实际上没有使用updatePeriodMillis。这只是一个将被删除的遗留物。我的小部件显示为2x2小部件,但图像大小为144x144。因此,2x2小部件具有在左上角显示的1x1图像。其他3个“单元格”为空,但不能被占用。小部件选择屏幕(Android 4.0.3)将其显示为2x2小部件。 - vulcanfk
1个回答

12

感谢您的回复。有趣的是,我有两个Android 4.0.3 AVD,其中一个显示为1x1小部件,而另一个显示为2x2小部件。我的AndroidManifest.xml指定为: <uses-sdk android:minSdkVersion="10" android:targetSdkVersion="15"/>我的WXGA800模拟器(mdpi)正在运行Android 4.0.3。它正确地呈现为1x1小部件。这也反映在我的Transformer Prime上,显示为1x1小部件。我的WXGA720模拟器(xhdpi)也正在运行Android 4.0.3。它将其呈现为2x2小部件。 - vulcanfk
1
有趣。我为v14+添加了一个单独的widget_info.xml文件,以指定40dip而不是72dip。现在在所有4.0.3测试设备上都可以正确渲染。我没有调整任何图像大小,也没有为v14+指定不同的可绘制资源。 - vulcanfk
有人能解释一下这是怎么回事吗?我的意思是,小部件在所有版本上看起来都一样,那么它怎么会在Android 4上占用40dp,在Android 2.3上占用72dp呢?谢谢。 - Ran
如果您使用在Android网站上提供的小部件背景资产,则旧版本的PNG文件中包含填充,而新版本的资产中不包含填充,因为它由主屏幕强制执行。 - Jeremy Edwards

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接