我尝试将颜色设置为自定义通知中存在的ImageView的图像。我可以通过写这一行来给它预定义的颜色:
remoteViews.setImageViewResource(R.id.imageView, R.color.Green);
但是我希望能够给它十六进制颜色值,并将其设置为颜色。我尝试将颜色设置为ImageView的背景,但我无法访问它,我必须访问ImageView的唯一选项是:
remoteViews
.setImageViewResource()
.setImageViewBitmap()
.setImageViewIcon()
.setImageViewUri()
有没有办法通过将十六进制值解析为其中任何一种来传递颜色? 我想如果我能够创建一个位图并将位图设置为图像视图,那么就可以完成,所以我编写下面的代码来创建位图:
int[] colors = {Color.parseColor("#64DD17"), Color.parseColor("#D32F2F")};
Bitmap bitmap = Bitmap.createBitmap(colors, 10, 10, Bitmap.Config.RGB_565);
,但我得到了一个 java.lang.ArrayIndexOutOfBoundsException 。我尝试了colors
数组中的一个元素,但同样的错误。
我的错误是什么?
答案 0 :(得分:1)
int[]
是你的形象;所以你创建一个宽2px
的图像,因为这是你的数组的长度。不过,您拨打createBitmap
并指定该图片实际上是10px
x 10px
;这就是ArrayIndexOutOfBoundsException
被抛出的原因,因为Android开始寻找不存在的像素。
使用Bitmap bitmap = Bitmap.createBitmap(colors, 2, 1, Bitmap.Config.RGB_565);
可以解决这个问题,虽然会生成一个非常小的图像!
答案 1 :(得分:0)
简单解决方案:生成png图像(或使用svg)放入图像视图,而不是您想要的颜色。
但是,如果你想使用这种方法,你可以使用类似的东西创建彩色位图:
Bitmap image = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
image.eraseColor(android.graphics.Color.GREEN);