国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

Android顏色編輯器的制作中遇到的問題分析

2020-02-21 17:39:23
字體:
供稿:網(wǎng)友
Android沒有自帶顏色編輯器,為了讓用戶直觀的選擇顏色,做了這么一個(gè)控件,效果圖如下:



上方顏色條為主顏色條,用戶可以選擇大致需要的顏色,下方是該顏色的平衡調(diào)節(jié),可以調(diào)節(jié)明亮度。

背景顏色實(shí)現(xiàn)起來很容易,用GradientDrawable在主色之間分段漸變即可,上方的背景色是永遠(yuǎn)不變的。下方平衡調(diào)節(jié)只要在白色、選定色和黑色之間漸變即可,下方的顏色隨著上方的顏色變化而變化。

顏色條自身控件由于需要拖動(dòng),直接集成Android自帶的SeekBar就能實(shí)現(xiàn),只需替換默認(rèn)的ProgressDrawable即可。

唯一遇到的一個(gè)奇怪問題是:

我為下方的顏色調(diào)提供了一個(gè)顏色數(shù)組:


private int[] colorArr;


里面存放:白色、上方選定色和黑色
當(dāng)上方選定色更改后,我改變colorArr數(shù)組中的第二個(gè)顏色,即選定色,并調(diào)用控件的invalidate方法,奇怪的是控件并沒有改變顏色,還是原來的顏色。

此時(shí),如果拖動(dòng)下方的滾動(dòng)條,哪怕只拖動(dòng)1%,也能改變成正確的顏色。
我就猜測(cè):Android的SeekBar在進(jìn)度沒有改變的時(shí)候,是不會(huì)重繪它的進(jìn)度背景色的。
于是使用以下技巧,人為的改變到某個(gè)進(jìn)度,再改回來,這樣就能重繪它的進(jìn)度背景色了:


/**
* 設(shè)置顏色平衡的中間色
* @param color
*/
public void SetBalenceColor(int color)
{
this.color = color;
SetBackground();//重新設(shè)置ProgressDrawable中的中間色
//this.invalidate();
int max = this.getMax();
int currentProgress = this.getProgress(); //備份進(jìn)度
this.setProgress(max - currentProgress);//修改到其他某個(gè)進(jìn)度
this.setProgress(currentProgress);//還原進(jìn)度
}
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 江达县| 阿拉善盟| 青海省| 嵊州市| 卓资县| 会东县| 海口市| 钟山县| 黎川县| 涪陵区| 岗巴县| 华宁县| 深水埗区| 洛南县| 甘孜县| 曲阳县| 门源| 同江市| 常山县| 绩溪县| 丰顺县| 晋城| 安多县| 平山县| 扎兰屯市| 昌都县| 桃园市| 宜兰市| 昌乐县| 巴里| 宣恩县| 荣成市| 碌曲县| 若尔盖县| 军事| 社会| 罗平县| 平陆县| 安福县| 新沂市| 嘉定区|