第一个问题是 Notification(..) 构造函数只获取资源 id,而不是可绘制的。我需要在通知中显示一些小(动态)图形。不久之前,我能够实现自定义 View,只是扩展 View 类,并实现 onDraw() 方法。该视图完美运行(我在 xml 布局文件中通过完整的类名使用它)。我决定(通过类比),我可以构建自己的 Drawable 类并在 xml 文件中声明它,但这不起作用。这是我的可绘制对象:
public class TestDrawable extends Drawable {
public TestDrawable() {
this.setBounds(0, 0, this.getIntrinsicWidth(), this.getIntrinsicHeight());
}
@Override
public int getIntrinsicWidth() {
return 36;
}
@Override
public int getIntrinsicHeight() {
return 36;
}
@Override
public void draw(Canvas canvas) {
Paint paint = new Paint();
paint.setStrokeWidth(2);
paint.setColor(Color.BLUE);
canvas.drawCircle(8, 8, 3, paint);
}
@Override
public void setAlpha(int alpha) {
}
@Override
public void setColorFilter(ColorFilter cf) {
}
@Override
public int getOpacity() {
return PixelFormat.OPAQUE;
}
}
我检查了很多 xml 可绘制文件、构造函数和方法组合的变体。但是,draw() 方法甚至没有被调用 :(。我将这个可绘制对象作为应用程序图标进行了测试。其他可绘制对象,如形状或图像都照常工作。