【发布时间】:2013-07-19 20:23:54
【问题描述】:
要在我的小部件上放置自定义字体,我正在创建一个包含字体的位图,然后将该位图放入我的 RemoteViews 中。但是,位图上的文本非常模糊,与 Activity 中的清晰程度相比,看起来确实像素化了。
已经有很多应用程序在小部件上使用自定义字体。不过,我还没有找到一种可靠的方法来做到这一点。如果有人对此问题有更好的解决方案,我很想听听!
现在这是我用来创建位图并将其放置在小部件上的方法:
RemoteViews widgetView = new RemoteViews(this.getPackageName(), R.layout.widget);
widgetView.setImageViewBitmap(R.id.widgetImage, buildBitmap());
与
public Bitmap buildBitmap() {
Bitmap bitmap = Bitmap.createBitmap(160, 84, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
TextPaint textPaint = new TextPaint(TextPaint.LINEAR_TEXT_FLAG | TextPaint.ANTI_ALIAS_FLAG);
textPaint.setTypeface(getFont());
textPaint.setStyle(Style.FILL);
textPaint.setColor(fontColor);
textPaint.setTextSize(fontSize);
StaticLayout staticLayout = new StaticLayout(textString, textPaint, bitmap.getWidth(), Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false);
staticLayout.draw(canvas);
return bitmap;
}
罪魁祸首小部件!上图是自定义字体,中图是位图上默认的Sans字体,表示不管用什么字体,文字都是模糊的。
最后一张图片是使用默认 remoteView.setTextViewText("Text"); 而不是位图时文本的样子。
对于这个问题的任何帮助将不胜感激!
【问题讨论】:
-
那个 160x84 的尺寸看起来非常小 - 你不应该调整屏幕密度吗?
-
提醒我为什么不能只使用自定义字体的文本视图?
-
@Tom 因为它是一个小部件。
RemoteViews不允许你这样做。 -
您好,任何人都可以帮助解决这个问题。我有同样的问题..!
标签: android bitmap android-widget android-canvas remoteview