Первая проблема заключалась в том, что конструктор Notification(..) получает только идентификатор ресурса, а не рисуемый. Мне нужно отобразить небольшую (динамическую) графику в уведомлении. Незадолго до этого я смог реализовать собственное представление, просто расширил класс представления и реализовал метод 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() даже не вызывается :(. Я тестировал этот объект рисования в качестве значка приложения. Другие объекты рисования, такие как фигуры или изображения, работают как обычно.