Есть ли способ использовать собственный класс Drawable в Drawable XML? - PullRequest
2 голосов
/ 01 марта 2012

Первая проблема заключалась в том, что конструктор уведомлений (..) получает только идентификатор ресурса, но не рисуется.Мне нужно отобразить небольшую (динамическую) графику в уведомлении.Незадолго до этого я смог реализовать пользовательский 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 () даже не вызывается :(. Я проверил это рисование как значок приложения. Другие рисования, так как формы или изображения работают как обычно.

1 Ответ

0 голосов
/ 01 марта 2012

Представление работает отлично (и я использовал его по полному имени класса в файле макета XML).

Возможно, для вашей собственной деятельности.Вы не можете использовать пользовательские View классы в любых RemoteViews обстоятельствах.

Я решил (по аналогии), что могу создать собственный класс Drawable и объявить его в XML-файле, но это не работает.

Неважно, можете вы или не можете.Процесс ОС отображает Notification.Процесс ОС не имеет вашего собственного Drawable класса.Следовательно, процесс ОС не может использовать ничего, что зависит от вашего пользовательского Drawable класса.

AFAIK, вы не можете создавать новые типы ресурсов для рисования вообще.

...