动态更改通知图标

时间:2016-09-07 18:08:50

标签: android

我希望Notification图标为1到1000之间的数字,具体取决于条件。

有没有办法动态地执行此操作(例如,从Icon生成String并在setSmallIcon()中使用它),而无需手动将所有这些数字创建为图像文件并调用它们动态?

1 个答案:

答案 0 :(得分: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;
}

之后,您可以使用此IconBitmap创建Icon.createWithBitmap()

(此方法已在API级别23中添加)

然后将此Icon传递给setSmallIcon()

(API级别23中也添加了setSmallIcon(Icon icon)