最初の問題は、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() メソッドは呼び出されませんでした:(。このドローアブルをアプリケーションアイコンとしてテストしました。形状や画像としての他のドローアブルは通常どおりに機能します。