Issue showing time using custom font

I have a digital clock widget and I want to use my own font to display the time. I know this cannot be done in remoteviews, so I got some code that renders a custom font to a bitmap and then drags it through remoteviews into the image. However, I cannot get it to work. This is my code:

        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);
    }

      

Any help is appreciated.

+1


source to share


1 answer


Now I have found out (with the help of an experienced developer) how to get it to work. The final code is now:



    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;
 }

      

+3


source







All Articles