android - 在 Drawable 上绘制

标签 android drawable

我想在现有的可绘制对象上绘制一个数字。就像电子邮件图标上的未读计数一样。可绘制对象是按钮的顶部图标。这是我的代码:

BitmapDrawable d = (BitmapDrawable) button.getCompoundDrawables()[1];
if(d != null) {
    Bitmap src = d.getBitmap();
    Bitmap b = Bitmap.createBitmap(src.getWidth(), src.getHeight(), src.getConfig());
    Canvas c = new Canvas(b);

    Paint p = new Paint();
    p.setAntiAlias(true);
    p.setStrokeWidth(1);
    p.setStyle(Style.FILL_AND_STROKE);
    p.setColor(Color.rgb(254, 0, 1));

    c.drawBitmap(src, 0, 0, p);
    c.drawCircle(b.getWidth()-5, 5, 5, p);
    button.setCompoundDrawables(null, new BitmapDrawable(b), null, null);
}

生成的可绘制对象是空的。这段代码有问题吗?

提前致谢。

最佳答案

新位图必须调用 setBounds(...)

BitmapDrawable dn = new BitmapDrawable(b);
dn.setBounds(d.getBounds());
button.setCompoundDrawables(null, dn, null, null);

关于android - 在 Drawable 上绘制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6264543/

相关文章:

java - 解析本地数据存储 : I can't access ACL secured objects from the network after force closing the app? (Android)

android - ListView 内的按钮操作

android - 程序类型已经存在 : android. support.v4.app.NavUtils 消息

android - 是否可以从 Android 中的特定密度访问可绘制对象?

android - 将目标 sdk 从 22 更新为 26 后出现 Resource Not Found 异常

android - 在性能方面,使用图像或 xml 创建的形状作为可绘制对象通常更好吗?

android - 使用大量内存的矢量绘图

java - 如何更改 Android 中 map View 上可绘制对象的大小?

android - 我应该如何解决这个崩溃问题?

Android:事件 ACTION_POWER_CONNECTED 未发送到我的 BroadcastReceiver