【Android自定義View】仿Photoshop取色器ColorPicker(一)

ColorPicker

一款仿Photoshop取色器的Android版取色器。采用HSV顏色空間,可手動(dòng)選取想要的顏色,也可以手動(dòng)輸入具體顏色的16進(jìn)制編碼以獲取顏色(如:0xFFFFFF表示白色)。

github地址:https://github.com/relish-wang/ColorPicker

效果圖

ColorPicker效果圖

總體預(yù)覽

ColorPicker項(xiàng)目結(jié)構(gòu)如下圖所示:

項(xiàng)目結(jié)構(gòu)預(yù)覽

核心自定義控件: ColorPickerView.java

顏色拾取對(duì)話框: ColorPickerDialog.java

顏色轉(zhuǎn)換相關(guān)工具: Utils.java

對(duì)話框布局文件: dialog_color_picker.xml(縱向布局)+dialog_color_picker.xml(橫向布局)

其他文件內(nèi)容都為項(xiàng)目構(gòu)建時(shí)的默認(rèn)內(nèi)容。

準(zhǔn)備工作

在開始了解ColorPicker的具體實(shí)現(xiàn)之前,需要首先了解一些顏色相關(guān)的概念。

  • RGB顏色空間以R(Red:紅)、G(Green:綠)、B(Blue:藍(lán))三種基本色為基礎(chǔ),進(jìn)行不同程度的疊加,產(chǎn)生豐富而廣泛的顏色,所以俗稱三基色模式,也是大家所熟知的一種顏色空間。它分為xyz三軸,分別表示綠藍(lán)紅(三者取值均在0~255之間,包含邊界),因此只要獲得綠、藍(lán)、紅三個(gè)值就可以獲得一個(gè)確切的顏色,所有的顏色構(gòu)成了如下圖所示的立方體,其中(0, 0, 0)到(255, 255, 255)體對(duì)角線表示黑到白的灰度值。
RGB顏色空間
  • HSV顏色空間是根據(jù)顏色的直觀特性由A. R. Smith在1978年創(chuàng)建的一種顏色空間, 也稱六角錐體模型(Hexcone Model)。模型中顏色的參數(shù)分別是:色調(diào)(H),飽和度(S),明度(V)。該模型以一個(gè)倒圓錐體的形式呈現(xiàn)。H表示圓錐體的底面圓弧上的某個(gè)點(diǎn)與圓心連線的線與紅色表示的點(diǎn)與圓心連線的線形成的夾角大小。故其取值范圍為0~360°(左閉右開;紅色為0°,綠色為120°,藍(lán)色為240°)。V顏色明亮的程度,越大明度越高,取值范圍為(0,1),包含邊界。S表示顏色接近光譜色的程度,數(shù)值越大越接近光譜色,取值范圍為(0,1),包含邊界。因此獲得H、S、V三者的值也可以獲得一個(gè)具體的顏色。
HSV顏色空間

ColorPicker庫(kù)核心自定義控件ColorPickerView的顏色拾取功能就是基于HSV顏色空間的。而且HSV和RGB是可以進(jìn)行轉(zhuǎn)換。不過(guò)不必?fù)?dān)心轉(zhuǎn)換,因?yàn)閍ndroid.graphics.Color.java提供了轉(zhuǎn)換方法:

hsv2rgb
rgb2hsv

下一篇主要講解ColorPickerView的繪制流程:仿Photoshop取色器ColorPicker(二)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容