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

标签 android xml-drawable

第一个问题是 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/

相关文章:

java - 使用 FirebaseRecyclerAdapter 将 Firebase 实时数据库中的数据检索到 Recycler View 中

android - 如何使用 1 个 GradientDrawable xml 资源制作 10 个具有 10 个不同边框角半径的 ImageView

android - XML 中的垂直条纹背景?

android - 如何创建 XML 可绘制对象的选择器?

java - 如何实现Java客户端应用程序(Android)和PHP服务器应用程序之间的通信?

android - 如何在 gradle 中的 defaultConfig 之外使用 applicationId?

Android Webview : E/chromium: [ERROR: ssl_client_socket_impl. cc (1141)]

使用矢量 xml 作为可绘制 API 16 时的 Android ResourceNotFound

Android:如何在可绘制的 xml 中使用当前主题的颜色?

java - 如何从 Firebase 存储获取 URL getDownloadURL