2

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

4

1 に答える 1

0

ビューは完全に機能します(そして、xmlレイアウトファイルで完全なクラス名で使用しました)。

おそらく、あなた自身の活動のために。どのような状況でもカスタムViewクラスを使用することはできません。RemoteViews

独自の Drawable クラスを作成して xml ファイルで宣言できると判断しましたが、これは機能しません。

できるかできないかは問題ではありません。OS プロセスは、Notification. DrawableOS プロセスにカスタムクラスがありません。Drawableしたがって、OS プロセスはカスタムクラスに依存するものを使用できません。

私の知る限り、通常、新しいドローアブル リソース タイプを作成することはできません。

于 2012-03-01T12:35:04.537 に答える