android 如何找出程序可绘制资源id(可绘制对象到int资源id)

hfyxw5xn  于 2023-02-14  发布在  Android
关注(0)|答案(1)|浏览(156)

我正在使用以下参考www.example.com制作可绘制资源https://developer.android.com/develop/ui/views/graphics/drawables#java

MyDrawable mydrawing = new MyDrawable(myText);
ImageView image = findViewById(R.id.imageView);
image.setImageDrawable(mydrawing);

上面的例子展示了如何通过程序制作可绘制的图像并分配给setimageDrawable()。但是我需要获得这个可绘制对象的资源ID来分配给通知栏build.setSmallIcon(xx),它需要int类型的资源ID。如何从这个可绘制对象获得资源ID?

MyDrawable mydrawing = new MyDrawable(myText);
mBuilder = new NotificationCompat.Builder(context,"default")
        .setContent(mRemoteViews)
        .setOnlyAlertOnce(true)
        .setAutoCancel(false)
        .setOngoing(true)
        .setSmallIcon(mydrawing); // <-- Error because mydrawing is not int type

MyDrawable.java 使给定字符可绘制

9rnv2umw

9rnv2umw1#

您应该使用here中描述的方法之一将自定义可绘制对象转换为位图,然后创建一个IconCompat对象并将该对象提供给setSmallIcon

MyDrawable mydrawing = new MyDrawable(myText);
Bitmap myBitmap = drawableToBitmap(mydrawing);
IconCompat smallIcon = IconCompat.createWithBitmap(myBitmap);

mBuilder = new NotificationCompat.Builder(context,"default")
        .setContent(mRemoteViews)
        .setOnlyAlertOnce(true)
        .setAutoCancel(false)
        .setOngoing(true)
        .setSmallIcon(smallIcon);

相关问题