使用Java Drawable作为通知图标

时间:2014-07-12 13:08:11

标签: java android android-notifications android-drawable

在Android项目中,我创建了一个基于Java的Drawable(更具体地说,是LevelListDrawable)。这样我就可以从值动态创建图标。

我有一个涵盖所有数字的级别,并包含Drawable。然后在Drawable中我绘制一个数字,然后由onLevelChange设置并重新绘制。

我想将LevelListDrawable用作通知的图标。

我制作了一个名为notif_icon.xml的XML文件,我相信它应该像Drawable一样工作。

<?xml version="1.0" encoding="utf-8"?>
<my.app.package.MyDrawable />

然后我尝试在我的代码中使用它:

mNotif = new Notification.Builder(this)
    .setContentTitle("Title")
    .setContentText("Message")
    .setOngoing(true)
    .setSmallIcon(R.drawable.notif_icon, random)
    .build();
// And show it later... 
NotificationManager man = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
man.notify(1, mNotif);

但我明白了:

  

android.app.RemoteServiceException:从包my.app.package发布的错误通知:无法创建图标:StatusBarIcon(pkg = my.app.packageuser = 0 id = 0x7f020001 level = 0 visible = true num = 0)

可能有什么不对?

1 个答案:

答案 0 :(得分:1)

  

可能有什么不对?

其他进程无法访问您应用的自定义视图,绘图或其他自定义类。因此,呈现通知的操作系统进程无法访问my.app.package.MyDrawable。这假设您的XML语法是正确的,我不知道您可以通过这种方式从任意类创建XML drawable(虽然我不能排除它,因为我还没有研究过这一点)。

欢迎您使用<level-list>可绘制资源和RemoteViews,但不能使用在内存中构建的LevelListDrawable,也不能使用LevelListDrawable的自定义子类