如何解决如何用画布重画选项菜单图标
| 我试图在我的Activity中的onPrepareOptionsMenu内获取一个optionsmenu-icon,并借助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;
}
不幸的是,什么都没有发生。与以前一样,菜单中的图标图像相同。
有人可以告诉我我使用的代码有什么问题吗?
解决方法
在这两行中:
c.drawCircle(5,5,50,油漆);
icon.draw(c);
您首先绘制一个圆圈,然后将图标绘制到Cavas c中,该图标派生自Bitmap \'bitmap \',因此新图形现在位于\'bitmap \'中,应将其设置为新图标。
尝试这个:
item.setIcon(新的BitmapDrawable(位图));
, 不推荐使用新的BitmapDrawable(bitmap)。
更新为新的BitmapDrawable(getResources(),位图)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。