android顏色處理:得到已知顏色的深色或者淺色

LinPalmerst 8年前發布 | 8K 次閱讀 Android開發 移動開發

 android的顏色處理在2d繪圖的時候有可能用到,剛好碰到需要根據已知顏色獲得其相應深色或者淺色的情況,我知道的有兩種方法。

第一種:將color轉換成hsv顏色空間改變hsv的值,再轉換成int類型的color值:

轉換成深色:

public int getDarkerColor(int color){
    float[] hsv = new float[3];
    Color.colorToHSV(color, hsv); // convert to hsv
    // make darker
    hsv[1] = hsv[1] + 0.1f; // more saturation
    hsv[2] = hsv[2] - 0.1f; // less brightness
    int darkerColor = Color.HSVToColor(hsv);
    return  darkerColor ;
}

轉換成淺色:

public int getBrighterColor(int color){
      float[] hsv = new float[3];
      Color.colorToHSV(color, hsv); // convert to hsv

  hsv[1] = hsv[1] - 0.1f; // less saturation
  hsv[2] = hsv[2] + 0.1f; // more brightness
  int darkerColor = Color.HSVToColor(hsv);
  return  darkerColor ;

}</pre>

第二種簡單,但是感覺不太科學,而且只能轉換成更淺的顏色:

int newColor = Color.parseColor("#0E" + oldColor.replace("#", ""));

 

可以看出其實就是在原有顏色的基礎上增加了不透明度。

 本文由用戶 LinPalmerst 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!