2017-07-04 52 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);