Как перерисовать опцию-иконку с холстом - PullRequest
2 голосов
/ 31 мая 2011

Я пытаюсь получить опциональный значок внутри onPrepareOptionsMenu в своей Activity и перерисовать его с помощью canvas:

    @Override
    public boolean onPrepareOptionsMenu(Menu menu) {
    super.onPrepareOptionsMenu(menu);

      MenuItem item = menu.findItem(R.id.menuCart);

      Drawable icon = item.getIcon();
      Bitmap bitmap = Bitmap.createBitmap(icon.getIntrinsicWidth(),
               icon.getIntrinsicHeight(),
               Bitmap.Config.ARGB_8888);
      Canvas c = new Canvas(bitmap);
      c.drawColor(Color.BLUE);
      Paint paint = new Paint();
      paint.setColor(Color.WHITE);
      paint.setAntiAlias(true);
      paint.setStyle(Style.FILL_AND_STROKE);
      c.drawCircle(5, 5, 50, paint);
      icon.draw(c);
      icon.invalidateSelf();
      item.setIcon(icon);

      return true;
}

К сожалению, ничего не происходит.В меню есть та же иконка-картинка, что и раньше.Может кто-нибудь сказать мне, что не так с кодом, который я использую?

Ответы [ 2 ]

0 голосов
/ 17 мая 2016

новый BitmapDrawable (bitmap) устарел.

Обновлено до нового BitmapDrawable (getResources (), bitmap))

0 голосов
/ 01 июня 2011

В этих двух строках:

c.drawCircle (5, 5, 50, краска);
icon.draw (с);

вы рисуете сначала кружок, а затем значок в Cavas c, который получен из растрового изображения «растровое изображение», следовательно, ваша новая графика теперь находится в «растровом изображении», которое должно быть установлено в качестве нового значка. Попробуйте это:

item.setIcon (new BitmapDrawable (bitmap));

...