2016-09-07 3 views
0

Я хочу, чтобы значок Notification был числом, которое может быть от 1 до 1000 в зависимости от условий.Изменение значков уведомлений динамически

Есть ли способ сделать это динамически (например, генерировать Icon из String и использовать его в setSmallIcon()) без ручного создания всех этих чисел в виде файла изображения и называя их динамически?

+0

Вы можете посмотреть в идентификационных знаков вместо –

+0

не представляется возможным в соответствии с уровнем API 23. – earthw0rmjim

+0

@GabeSechan пожалуйста, вы можете привести конкретный пример? Пытался искать бэкинг, но я получаю много хти, те, которые я изучал, похоже, не те, которые мне нужны. Я пытаюсь создать нечто похожее на [this] (https://lh4.ggpht.com/9PZYdDwGmFliEq1OKrM_PU1NId5q1uYleGittsMyNHwMn6JQd2hvu-cTrqsS00phew=h310-rw) –

ответ

1

К сожалению, нет никакой возможности (я знаю), чтобы сделать это ниже уровня API 23.

На уровне API 23+:

Вы можете использовать Canvas.drawText() создать Bitmap от вашего String.

Например:

public Bitmap createBitmapFromString(String string) { 
    Paint paint = new Paint(); 
    paint.setAntiAlias(true); 
    paint.setTextSize(50); // size is in pixels 

    Rect textBounds = new Rect(); 
    paint.getTextBounds(string, 0, string.length(), textBounds); 

    Bitmap bitmap = Bitmap.createBitmap(textBounds.width(), textBounds.height(), 
     Bitmap.Config.ARGB_8888); 

    Canvas canvas = new Canvas(bitmap); 
    canvas.drawText(string, -textBounds.left, 
     textBounds.height() - textBounds.bottom, paint); 

    return bitmap; 
} 

После этого вы можете создать Icon с помощью этого Bitmap с Icon.createWithBitmap().

(этот метод был добавлен в уровне API 23)

, а затем передать это Icon к setSmallIcon().

(setSmallIcon(Icon icon) также была добавлена ​​в уровне API 23)

Смежные вопросы