要在我的Widget上放置自定義字體,我正在使用其中的字體創建位圖,然後將該位圖放入我的RemoteView中。然而,位圖上的文本相當模糊,並且看起來相當像一個活動中的水晶般清晰。當使用位圖時,RemoteViews(Widget)具有模糊文字
已有相當多的應用程序在小部件上使用自定義字體。儘管如此,我還沒有找到一個堅實的方法來做到這一點。如果有人有更好的解決這個問題,我很樂意聽到它!
現在這是我用來創建位圖,並將其放置在窗口小部件是什麼:
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尺寸看起來非常小 - 你不應該調整屏幕密度嗎? – Delyan
提醒我爲什麼你不能只使用自定義字體的textview? – Tom
@Tom因爲它是一個小部件。 'RemoteViews'不會讓你這樣做。 – kabuko