我有一个数字时钟小部件,我想使用自定义字体来显示时间.我知道它不能在远程视图中完成,所以我获得了一些代码,将自定义字体呈现为位图,然后将其跨远程视图推送到图像视图.但是,我无法让它工作.到目前为止,这是我的代码:
I have a digital clock widget, and I want to use a custom font to display the time. I know that it can't be done in remoteviews, so I have obtained some code that renders the custom font to a bitmap and then pushes it across remoteviews to an imageview. However, I am unable to get it to work. This is my code so far:
public Bitmap buildUpdate(String time)
{
RemoteViews views = new RemoteViews(this.getPackageName(), R.layout.main);
Bitmap myBitmap = Bitmap.createBitmap(100, 50, Bitmap.Config.ARGB_4444);
Canvas myCanvas = new Canvas(myBitmap);
Paint paint = new Paint();
Typeface clock = Typeface.createFromAsset(this.getAssets(),"Clockopia.ttf");
paint.setAntiAlias(true);
paint.setSubpixelText(true);
paint.setTypeface(clock);
paint.setStyle(Paint.Style.FILL);
paint.setColor(Color.WHITE);
paint.setTextSize(15);
myCanvas.drawText(time, 0, 20, paint);
views.setImageViewBitmap(R.id.TimeView, myBitmap);
return myBitmap;
}
private void update() {
mCalendar.setTimeInMillis(System.currentTimeMillis());
final CharSequence date = DateFormat.format(mDateFormat, mCalendar);
final CharSequence day = DateFormat.format(mDayFormat, mCalendar);
// final CharSequence time = DateFormat.format(mTimeFormat, mCalendar);
String time = (String) DateFormat.format(mTimeFormat, mCalendar);
RemoteViews views = new RemoteViews(getPackageName(), R.layout.main);
views.setTextViewText(R.id.Day, day);
views.setTextViewText(R.id.Date, date);
// views.setTextViewText(R.id.Time, time);
buildUpdate(time);
ComponentName widget = new ComponentName(this, DigiClock.class);
AppWidgetManager manager = AppWidgetManager.getInstance(this);
manager.updateAppWidget(widget, views);
}
感谢任何帮助.
我现在(在经验丰富的开发人员的帮助下)找到了如何让它工作.现在最终的代码是:
I have now found out (with the help of an experienced developer) how to get it to work. The final code now is:
private void update() {
mCalendar.setTimeInMillis(System.currentTimeMillis());
final CharSequence date = DateFormat.format(mDateFormat, mCalendar);
final CharSequence day = DateFormat.format(mDayFormat, mCalendar);
String time = (String) DateFormat.format(mTimeFormat, mCalendar);
RemoteViews views = new RemoteViews(getPackageName(), R.layout.main);
views.setTextViewText(R.id.Day, day);
views.setTextViewText(R.id.Date, date);
views.setImageViewBitmap(R.id.TimeView, buildUpdate(time));
ComponentName widget = new ComponentName(this, DigiClock.class);
AppWidgetManager manager = AppWidgetManager.getInstance(this);
manager.updateAppWidget(widget, views);
}
public Bitmap buildUpdate(String time)
{
Bitmap myBitmap = Bitmap.createBitmap(160, 84, Bitmap.Config.ARGB_4444);
Canvas myCanvas = new Canvas(myBitmap);
Paint paint = new Paint();
Typeface clock = Typeface.createFromAsset(this.getAssets(),"Clockopia.ttf");
paint.setAntiAlias(true);
paint.setSubpixelText(true);
paint.setTypeface(clock);
paint.setStyle(Paint.Style.FILL);
paint.setColor(Color.WHITE);
paint.setTextSize(65);
paint.setTextAlign(Align.CENTER);
myCanvas.drawText(time, 80, 60, paint);
return myBitmap;
}
这篇关于使用自定义字体显示时间问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!