2017-07-04 54 views
0

我试图设置一个颜色作为一个图像到存在于自定义通知中的ImageView。我可以通过编写此行给它预定义的颜色:如何设置通知内的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阵列中的一个元素,但同样的错误。 这里有什么错误?

回答

1

int[]是你的形象;所以你创建一个图像2px宽,因为这是你的数组的长度。但是,您致电createBitmap并指定图像实际上是10px x 10px;这就是为什么ArrayIndexOutOfBoundsException被抛出,因为Android开始寻找不在那里的像素。

使用Bitmap bitmap = Bitmap.createBitmap(colors, 2, 1, Bitmap.Config.RGB_565);可以解决这个问题,尽管生成一个非常小的图像!

0

简单的解决方案:生成PNG图像(或使用SVG)放在图像视图,而不是你想要的颜色。

但是,如果u想用这种方法,你可以使用类似的东西创建彩色位图:

Bitmap image = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); 
    image.eraseColor(android.graphics.Color.GREEN);