如何在小部件中使用自定义字体?

我有一个数字时钟小部件。如何在显示时钟的textview中使用资产/字体中的自定义字体作为默认字体?


这是我的代码:


    package android.tristan.widget.digiclock;


import java.util.Calendar;


import android.app.PendingIntent;

import android.app.Service;

import android.appwidget.AppWidgetManager;

import android.appwidget.AppWidgetProvider;

import android.content.BroadcastReceiver;

import android.content.ComponentName;

import android.content.Context;

import android.content.Intent;

import android.content.IntentFilter;

import android.os.IBinder;

import android.os.Vibrator;

import android.text.format.DateFormat;

import android.widget.RemoteViews;



public class DigiClock extends AppWidgetProvider {


    @Override

    public void onDisabled(Context context) {

        super.onDisabled(context);

        context.stopService(new Intent(context, UpdateService.class));

    }

    public void onReceive(Context context, Intent intent)

    {

        super.onReceive(context, intent);


        if(intent.getAction().equals("android.tristan.widget.digiclock.CLICK"))

        {

          Vibrator vibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);

          vibrator.vibrate(50);           

            final Intent alarmClockIntent = new Intent(Intent.ACTION_MAIN, null);

            alarmClockIntent.addCategory(Intent.CATEGORY_LAUNCHER);

            final ComponentName cn = new ComponentName("com.android.deskclock", "com.android.deskclock.AlarmClock");

            alarmClockIntent.setComponent(cn);

            alarmClockIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

            context.startActivity(alarmClockIntent);

        }

        if(intent.getAction().equals("android.tristan.widget.digiclock.CLICK_2"))

        }

    }


有只小跳蛙
浏览 520回答 3
3回答

守着一只汪

我对度量大小进行了一些更改,因此位图将支持不同的字体大小。它仅支持单行文本。public static Bitmap getFontBitmap(Context context, String text, int color, float fontSizeSP) {    int fontSizePX = convertDiptoPix(context, fontSizeSP);    int pad = (fontSizePX / 9);    Paint paint = new Paint();    Typeface typeface = Typeface.createFromAsset(context.getAssets(), "Fonts/Roboto-Regular.ttf");    paint.setAntiAlias(true);    paint.setTypeface(typeface);    paint.setColor(color);    paint.setTextSize(fontSizePX);    int textWidth = (int) (paint.measureText(text) + pad * 2);    int height = (int) (fontSizePX / 0.75);    Bitmap bitmap = Bitmap.createBitmap(textWidth, height, Bitmap.Config.ARGB_8888);    Canvas canvas = new Canvas(bitmap);    float xOriginal = pad;    canvas.drawText(text, xOriginal, fontSizePX, paint);    return bitmap;}public static int convertDiptoPix(Context context, float dip) {    int value = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dip, context.getResources().getDisplayMetrics());    return value;}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Android