位图作为状态栏图标

时间:2017-01-26 16:28:37

标签: android

使用notificationCompat,您只能通过其ID设置通知的小图标,所以我一直在寻找一种解决方法,将实时温度显示为状态栏图标。

我目前正在与之合作:

LayerDrawable能够替换图层中的drawable,因此我将温度String转换为可绘制的位图并替换了图层。替换似乎工作,但原始drawable仍然显示。有什么想法吗?

Layer Drawable(我尝试过一个空白的png和一个全白色的png):

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/temp_foreground">
        <bitmap android:src="@drawable/blank_white"/>
    </item>
</layer-list>

设置小图标:

NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context);
    mBuilder.setPriority(Notification.PRIORITY_MAX);
    mBuilder.setWhen(System.currentTimeMillis());

    LayerDrawable ld = (LayerDrawable) ContextCompat.getDrawable(context, R.drawable.status_bar_temp);
    Drawable temp = new BitmapDrawable(context.getResources(), convertTempToBitmap(StringUtils.appendDegree(getTemperature())));
    boolean success = ld.setDrawableByLayerId(R.id.temp_foreground, temp);
    if (success) {
        ld.invalidateSelf();
        mBuilder.setSmallIcon(R.drawable.status_bar_temp);
    }

这是生成的位图(如果有帮助): enter image description here

0 个答案:

没有答案