我在获取我正在设计的主屏幕小部件的大小时遇到了一些问题。我已经阅读了sdk文档并进行了一些搜索,但我没有找到任何有用的东西。无论如何,我正在使用widget提供者的onAppWidgetOptionsChanged方法来获取API16以上设备上的widget大小,但它在某些设备上报告错误。它在Nexus和Transformer Prime上运行正常,但它在我的S3上给出的值比我从屏幕截图上测得的值要小。我已经说明了这样一个事实:它是以dp而不是像素为单位报告的。我猜三星的launcher增加了某种类型的利润,但我找不到任何关联。例如,当我使用2x2小工具时,onAppWidgetOptionsChanged报告154dp (~293px)宽和193dp (~355px)高,但我在Photoshop中测量了~340px x 420px。这只是一个三星的问题,还是我将在许多非普通平台上面临这个问题。代码非常简单,但我只是为了以防万一。
@Override
public void onAppWidgetOptionsChanged(Context context, AppWidgetManager appWidgetManager, int appWidgetId, Bundle newOptions) {
int minWidth = newOptions.getInt(AppWidgetManager.OPTION_APPWIDGET_MIN_WIDTH);
int maxWidth = newOptions.getInt(AppWidgetManager.OPTION_APPWIDGET_MAX_WIDTH);
int minHeight = newOptions.getInt(AppWidgetManager.OPTION_APPWIDGET_MIN_HEIGHT);
int maxHeight = newOptions.getInt(AppWidgetManager.OPTION_APPWIDGET_MAX_HEIGHT);
Log.i("WidgetProvider","Widget size changed");
Log.i("WidgetProvider","minWidth: " + minWidth);
Log.i("WidgetProvider","minHeight: " + minHeight);
Log.i("WidgetProvider","maxWidth: " + maxWidth);
Log.i("WidgetProvider","maxHeight: " + maxHeight);
}
我正在使用报告的大小在我的小部件更新服务中生成位图。我需要使用自定义位图,因为我想为我的小部件使用自定义字体和背景。在API16以下的设备上,我只是将位图设置为widget info xml中定义的minWidth和minHeight。在一些设备上,这会在小部件周围留下比我希望的更多的填充,但图像是不失真的。据我所知,在早期的设备中没有办法获得小部件的大小。此外,我不相信自定义字体可以在应用程序小部件的TextView中使用。这是正确的吗?我试过在图片上使用fitXY,但它在某些设备上看起来很糟糕。有没有更可预测的方法在小部件上实现自定义背景和自定义字体?任何建议都将不胜感激。谢谢!
发布于 2013-03-02 13:52:40
看起来我遇到了samr问题。Galaxy Note上的小部件4*4。onAppWidgetOptionsChanged返回426*384最大尺寸,但如果你在屏幕上看到高度大于宽度...
https://stackoverflow.com/questions/15141220
复制相似问题