0

此問題在某種意義上跟隨this post,並基於the solution showed on this post。但無論如何,我會嘗試以完整的方式提出問題。ColorMatrixColorFilter不適用於自定義按鈕背景

我有自定義按鈕與背景選擇器組成的正常狀態可繪製和按狀態可繪製。該可繪顏色onSizeChanged()使用PorterDuffColorFilter

getBackground().mutate().setColorFilter(backGroundColor, Mode.MULTIPLY); 

這部分工程確定的方法改變。但我想通過改變@kcoppock在his post指出的Hue來改善顏色選擇。

  • 我創建了一個ColorMatrixColorFIlter使用推薦的代碼,我看到使用調試器Eclipse中的矩陣,似乎罰款。
  • 當我嘗試使用ColorMatrixColorFIlter而不是PorterDuffColorFilter時,按鈕可繪製保留未上色就好像過濾器未應用或無效。

第二個問題,相關:我如何去改變選擇器中的每個Drawable到不同的顏色?

EDIT
一些更多的信息,與調試器我看到這​​個矩陣,爲240度(或-120度)色相偏移的代碼之後(浮點夾到3個小數位)

[ 0.004, 1.692, -0.696, 0.000, 0.000 ] 
[ 0.196, 0.451, 0.353, 0.000, 0.000 ] 
[ 1.001, 0.453, -0.454, 0.000, 0.000 ] 
[ 0.000, 0.000, 0.000, 1.000, 0.000 ] 

根據我的理解,這個矩陣並不靠近單位矩陣,你甚至可以看到每一行的總和恰好是1,所以顏色應該移位。我應該在按鈕中看到一些顏色變化。
此外,剛看到這個矩陣正在採取我硬編碼它刪除R分量

[ 0 0 0 0 0 ] 
[ 0 1 0 0 0 ] 
[ 0 0 1 0 0 ] 
[ 0 0 0 1 0 ] 

,然後我看到青色的按鈕,所以這意味着過濾器的工作,但我不能讓色調發生變化。

回答

0

在調試代碼並確保矩陣生成OK並且應用了過濾器後,我開始懷疑問題不依賴於代碼,而是在用於按鈕的基本映像中。
基本圖像是Photoshop生成的24位PNG透明膠片,所有顏色都是灰色陰影。
微軟Office圖片管理器打開它,去編輯圖片...並向顏色工具。
令我驚訝的是,改變色調也沒有改變顏色。我不得不移動Amount滑塊來獲得一些顏色,只有色調有效。

因此,對於所有的實際目的來解決這個問題。

注意:我應該知道更好,因爲我研究瞭如何將顏色從RGB轉換爲HSL o獲得所需的色調。並且轉換算法清晰地區分無色顏色從色差顏色。無色的顏色是那些R = G = B的顏色,因爲它們的色調值是未定義的,並且因爲飽和度爲0,所以它沒有意義。因此,將色調值應用於無色值不會改變它。