第一个问题是 Notification(..) 构造函数只获取资源 ID,而不是可绘制对象。我需要在通知中显示一些小的(动态的)图形。 不久之前,我能够实现自定义 View ,只需扩展 View 类,并实现 onDraw() 方法。该 View 工作完美(我在 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() 方法 :(。我将这个可绘制对象作为应用程序图标进行了测试。其他可绘制对象,如形状或图像,照常工作。
最佳答案
The view works perfectly (and i used it by full class name in xml layout file).
也许是为了您自己的 Activity 。您不能在任何 RemoteViews
情况下使用自定义 View
类。
I decided (by analogy), that i can build own Drawable class and declare it in xml file, but this not works.
你能不能不重要。操作系统进程显示 Notification
。操作系统进程没有您自定义的 Drawable
类。因此,操作系统进程不能使用任何依赖于您的自定义 Drawable
类的东西。
据我所知,您通常无法创建新的可绘制资源类型。
关于android - 有没有办法在可绘制 XML 中使用自己的 Drawable 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9515269/