我有一個ImageView,它顯示了我的資源文件夾的Drawable。其次,我在ImageView下面有一個seekbar。每個像素的顏色應該根據seekbar的值而改變。應該改變每個像素的顏色,當seekbar具有最大值時,每個像素的'g'和'b'值應該爲0,以便只顯示紅色。如果您降低搜索欄,則應將其轉回。根據Android中的SeekBar更改可繪製顏色
我認爲這是通過將drawable轉換爲位圖,遍歷像素並根據當前的seekbar進度及其當前顏色值更改其顏色值來完成的。
但這只是一個想法。到目前爲止,我無法以正確的方式實現這一點。也許你們中的一些人可以給出一個代碼示例,或者甚至有更好的解決方案。如果有人能幫忙,會很高興。
編輯:隨着@pskink的幫助(見下面的評論),我是能夠實現的東西:
float colorValue = 1 - (float) seekBar.getProgress()/100; // SeekBar has 100 as maxVal
float[] colorMatrix = {
1, 0, 0, 0, 0, //red
0, colorValue, 0, 0, 0, //green
0, 0, colorValue, 0, 0, //blue
0, 0, 0, 1, 0 //alpha
};
ColorFilter colorFilter = new ColorMatrixColorFilter(colorMatrix);
backgroungImageView.setColorFilter(colorFilter);
現在的問題是(明顯),不僅原來的紅色部分中脫穎而出。一切都是紅色的,這也不是我想要的。我試圖實現的目標是當搜索條達到最高水平時只顯示紅色部分。如果ColorMatrix也可以這麼做,但我不確定。有什麼建議麼?可以玩Alpha通道幫助嗎?
查看'ColorMatrixColorFilter' – pskink
非常感謝!這似乎是我需要的東西 – MattLance
我希望你知道如何將它應用到你的'ImageView'上? – pskink