【问题标题】:Sizing Text Bitmap for Android Home Screen Widget调整 Android 主屏幕小部件的文本位图大小
【发布时间】:2014-07-07 04:11:52
【问题描述】:

我想创建一个使用自定义字体来显示一段文本的主屏幕小部件。

现在,我使用绘制文本的方法是膨胀文本使用的布局,然后设置文本,最后将该布局转换为位图。代码如下:

//Leveraging view framework to built my text image
View v = LayoutInflater.from(context).inflate(R.layout.item_widget_text, null);
((TextView)v.findViewById(R.id.title)).setText(title);
((TextView)v.findViewById(R.id.subtitle)).setText(subtitle);
v.measure(MeasureSpec.makeMeasureSpec(1040, MeasureSpec.EXACTLY),
            MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
v.layout(0, 0, v.getMeasuredWidth(),v.getMeasuredHeight());

//Creating the bitmap
final Bitmap returnedBitmap = Bitmap.createBitmap(v.getMeasuredWidth(),
            v.getMeasuredHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(returnedBitmap);
v.draw(canvas);

为了为要绘制的布局创建位图,我需要知道小部件的大小,特别是小部件的宽度。

我的问题是我不知道如何获取小部件的大小。对于 android 4.1 及更高版本,我使用的是onAppWidgetOptionsChanged()。但是,我的应用程序支持 4.0 及更高版本。所以对于 4.1 以下的 android 版本,我无法正确调整布局大小,因此无法生成正确的位图。

有没有办法做到这一点?还是我刚才看到的更优雅/正确的方法?

我在 4.0 设备上看到了许多小部件,例如 Gmail 小部件。他们怎么能把他们的小部件画得这么漂亮?他们是使用自定义字体还是只是使用没有字体的标准文本视图?

【问题讨论】:

  • 还没有看到任何答案。以为我会把它扔掉...stackoverflow.com/questions/14062651/…
  • @user3811037 感谢您的回答!但是,该帖子仅回答了设备 4.1+ 的大小问题。我的问题是低于 4.1 的设备。我正在寻找一种方法来获取小部件的大小,或者寻找一种更优雅的方式来实现我的目标(在可动态调整大小的小部件上使用自定义字体)。

标签: android android-layout widget android-widget android-appwidget


【解决方案1】:

不确定这是否会有所帮助,但是... http://www.vogella.com/tutorials/AndroidWidgets/article.html#overview_size

"2.3. 小部件尺寸 在 Android 3.1 之前,小部件总是在主屏幕上占据固定数量的单元格。单元格通常用于显示一个应用程序的图标。作为计算规则,您应该使用以下公式定义小部件的大小:((列数/行数) * 74) - 2。这些是与设备无关的像素,-2 用于避免舍入误差。

从 Android 3.1 开始,小部件的大小可以灵活调整,例如,用户可以将其放大或缩小。要为小部件启用此功能,您可以在小部件的 XML 配置文件中使用 android:resizeMode="horizo​​ntal|vertical" 属性。"

【讨论】:

  • 您好,谢谢您的回答,但不幸的是,这种方法也无效。小部件永远不会告诉我们它当前占用了多少个单元格(您可以粗略地推断出 android 3.1 及更高版本)。因此,如果没有这些信息,也无法准确地确定尺寸。 :(
  • 你好。你想通了吗?找到有关 1.5 SDK 平台小部件和规范的信息。 android-developers.blogspot.com/2009/04/… 更多信息在这里:android-developers.blogspot.com/2009/04/…
  • 哥们,哇!感谢您的持续帮助。我有点得出结论,这并不完全可能,而是改用普通的文本视图和普通的字体。我会调查这些链接,如果它们得到答案,我会用功能解决方案更新这个线程。再次感谢您的帮助! :D
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-04-20
  • 1970-01-01
  • 2015-08-11
  • 1970-01-01
  • 1970-01-01
  • 2012-01-31
相关资源
最近更新 更多