Цифровые часы, как создать цифровые часы с пользовательскими изображениями для часов Android - PullRequest
1 голос
/ 22 марта 2012

Я хочу построить цифровой час, как это:

https://play.google.com/store/apps/details?id=com.bacastudio.lcd

Я пытаюсь добавить шрифт, используя этот учебник, но он не работает: https://github.com/browep/AndroidCustomFontWidgets/blob/master/AndroidManifest.xml

Спасибо за любую помощь:)

У меня проблема со шрифтом, в Eclipse все в порядке, все ошибки, но при запуске ничего не происходит.

package org.me;



   public class Euro2012cc extends AppWidgetProvider {

@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,  int[] appWidgetIds) {
    context.startService(new Intent(context, UpdateService.class));
}

public static class UpdateService extends Service {
    @Override
    public void onStart(Intent intent, int startId) {
        // Build the widget update for today
        RemoteViews view = buildUpdate(this);
        // Push update for this widget to the home screen
        ComponentName thisWidget = new ComponentName(this, Euro2012cc.class);
        AppWidgetManager manager = AppWidgetManager.getInstance(this);
        manager.updateAppWidget(thisWidget, view);
    }

        public RemoteViews buildUpdate(Context context) {
            RemoteViews view = null;
            view = new RemoteViews(context.getPackageName(), R.layout.main);
            String time = "blablabla";
            view.setImageViewBitmap(R.id.test, buildUpdateTime(time));
            return view;
        }           
        @Override
        public IBinder onBind(Intent intent) {
            // We don't need to bind to this service
            return null;
            }//ibinder
        public Bitmap buildUpdateTime(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(),"TechnoHideo.ttf");
            paint.setAntiAlias(true);
            paint.setSubpixelText(true);
            paint.setTypeface(clock);
            paint.setStyle(Paint.Style.FILL);
            paint.setColor(Color.WHITE);
            paint.setTextSize(15);
            paint.setTextAlign(Align.CENTER);
            myCanvas.drawText(time, 80, 60, paint);
            return myBitmap;                
        }

}

}

1 Ответ

0 голосов
/ 22 марта 2012

Поскольку RemoteViews не поддерживают установку шрифта для Textview, вам нужно нарисовать текст, а затем преобразовать в растровое изображение следующим образом:

Шаг 1: Создание изображения с пользовательской гарнитурой:

public static synchronized Bitmap createBitmapWithTypeface(Typeface tf, String strMyText) {
    Paint paint = new Paint();
    paint.setStyle(Paint.Style.FILL);
    paint.setColor(Color.RED);
    paint.setTextSize(CUSTOM_TEXT_SIZE);
    paint.setAntiAlias(true);
     You can load you custom typeface here 
    paint.setTypeface(tf);

    Bitmap mybitmap = Bitmap.createBitmap(BITMAP_WIDTH, BITMAP_HEIGHT, Bitmap.Config.ALPHA_8);
    Canvas c = new Canvas(mybitmap);
    c.drawColor(Color.WHITE);c.drawText(strMyText, 0, 0, paint);  

    return mybitmap;
}

Шаг2: Установить изображение на RemoteViews

setImageViewBitmap(int viewId, Bitmap bitmap)

Обратите внимание на память с этим решением

...