有没有办法在可绘制的XML中使用自己的Drawable类?

时间:2012-03-01 11:23:13

标签: android xml-drawable

第一个问题是Notification(..)构造函数只获取资源ID,而不是drawable。我需要在通知中显示一些小(动态)图形。 不久之前,我能够实现自定义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()方法甚至没有调用:(。我测试了这个drawable作为应用程序图标。其他drawables,因为形状或图像照常工作。

1 个答案:

答案 0 :(得分:0)

  

视图效果很好(我在xml布局文件中使用完整的类名称)。

也许是为了你自己的活动。您无法在任何View环境中使用自定义RemoteViews课程。

  

我决定(通过类比),我可以构建自己的Drawable类并在xml文件中声明它,但这不起作用。

你能不能无所谓。操作系统进程显示Notification。操作系统进程没有您的自定义Drawable类。因此,操作系统进程不能使用任何取决于您的自定义Drawable类的内容。

AFAIK,通常无法创建新的可绘制资源类型。