AndroidUI初探⑤Palette調(diào)色板

前言

經(jīng)過這么多年的UI發(fā)展仅淑,對(duì)UI對(duì)變換能力要求越來越高,從擬物化到扁平化再到Android到Material Design 藐翎,UI越來越友好,豐富而簡約实幕。設(shè)計(jì)是藝術(shù)性的吝镣,也是需要技術(shù)做支撐的 ,更主要的是對(duì)用戶是友好的昆庇,在設(shè)計(jì)不同質(zhì)化的前提下末贾,要減少用戶的學(xué)習(xí)成本,盡量設(shè)計(jì)簡潔操作路徑流暢整吆,不為花哨而花哨拱撵,盡量符合自然。

在有模塊或分類呈現(xiàn)時(shí) 掂为,往往我們的設(shè)計(jì)都會(huì)在每個(gè)Item的底部加入圖片裕膀,作為豐富Item的背景圖或是表示模塊的意象圖 。在圖片上面勇哗,我們往往會(huì)有title和description昼扛,當(dāng)圖片顏色與文字顏色相沖時(shí),Item上當(dāng)字就會(huì)看不清楚欲诺,我們常用的做法是抄谐,在文字下方增加一個(gè)半透明的黑色背景 。在以前我們或許沒轍扰法,但現(xiàn)在蛹含,Google為我們提供了一個(gè)圖片但取色器,我們可以通過palette來獲取到ImageView中圖片的部分顏色值塞颁。

Palette 取色器

引入palette庫

compile 'com.android.support:palette-v7:26.0.0-alpha1'

獲取ImageView的BitMap

// 拿到ImageView的bitmap
BitmapDrawable bitmapDrawable = (BitmapDrawable) imageView.getDrawable();
Bitmap bitmap = bitmapDrawable.getBitmap();

使用Palette進(jìn)行取色

// 進(jìn)行bitmap色彩分析
Palette.from(bitmap).generate(new Palette.PaletteAsyncListener() {
    @Override
    public void onGenerated(Palette palette) {
        // 得到暗柔和的顏色
        int darkMutedColor = palette.getDarkMutedColor(Color.MAGENTA);
        // 暗 浦箱, 鮮艷
        int darkVibrantColor = palette.getDarkVibrantColor(Color.RED);
        // ...
        // 色值取樣
        // 暗色 柔和系
        // Palette.Swatch darkMutedSwatch = palette.getDarkMutedSwatch();
        // 亮色 柔和系取樣
        Palette.Swatch lightMutedSwatch = palette.getLightMutedSwatch();
        // 得到描述文本顏色取樣
        int bodyTextColor = lightMutedSwatch.getBodyTextColor();
        // 得到title文本顏色取樣
        int titleTextColor = lightMutedSwatch.getTitleTextColor();
        // 得到文本模塊背景色取樣
        int rgb = lightMutedSwatch.getRgb();
        // 通過取樣色值和透明度吸耿,得到顏色值并設(shè)置
        linearLayout.setBackgroundColor(getTranslucentColor(0.5F,rgb));
        desc.setTextColor(bodyTextColor);
        title.setTextColor(titleTextColor);
        linearLayout.setVisibility(View.VISIBLE);
    }
});

/**
 * 根據(jù)rgb顏色值進(jìn)行透明度計(jì)算
 * @param percent
 * @param rgb
 * @return
 */
private int getTranslucentColor(float percent,int rgb) {
    int red = Color.red(rgb);
    int green = Color.green(rgb);
    int blue = Color.blue(rgb);
    int alpha = Color.alpha(rgb);
    alpha = Math.round(percent * alpha);
    return Color.argb(alpha,red,green,blue);
}

Palette類使用起來非常方便,所提供的選擇也比較多酷窥,可以獲取明暗光咽安,柔和,艷麗等多種組合蓬推,也可以使用取樣值 妆棒,Google推薦 ,內(nèi)部通過算法來進(jìn)行推倒沸伏,找到適合的色值來進(jìn)行組合糕珊。


palette.getDarkMutedColor(@ColorInt final int defaultColor); // 暗 ,柔和
palette.getDarkVibrantColor(@ColorInt final int defaultColor); // 暗 毅糟,艷麗

palette.getLightMutedColor(@ColorInt final int defaultColor) // 亮 红选,柔和
palette.getLightVibrantColor(@ColorInt final int defaultColor) // 亮 ,艷麗

palette.getMutedColor(@ColorInt final int defaultColor) // 柔和
palette.getVibrantColor(@ColorInt final int defaultColor) // 艷麗
  

結(jié)語

對(duì)于這些需要高深算法的庫姆另,在不是有特別需求都情況下纠脾,一般都不會(huì)研究他都源碼,只要會(huì)用就OK了蜕青,畢竟是做應(yīng)用苟蹈,每天總有寫不完的需求。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末右核,一起剝皮案震驚了整個(gè)濱河市慧脱,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌贺喝,老刑警劉巖菱鸥,帶你破解...
    沈念sama閱讀 206,602評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異躏鱼,居然都是意外死亡氮采,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門染苛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鹊漠,“玉大人,你說我怎么就攤上這事茶行∏牛” “怎么了?”我有些...
    開封第一講書人閱讀 152,878評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵畔师,是天一觀的道長娶靡。 經(jīng)常有香客問我,道長看锉,這世上最難降的妖魔是什么姿锭? 我笑而不...
    開封第一講書人閱讀 55,306評(píng)論 1 279
  • 正文 為了忘掉前任塔鳍,我火速辦了婚禮,結(jié)果婚禮上呻此,老公的妹妹穿的比我還像新娘献幔。我一直安慰自己,他們只是感情好趾诗,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,330評(píng)論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蹬蚁,像睡著了一般恃泪。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上犀斋,一...
    開封第一講書人閱讀 49,071評(píng)論 1 285
  • 那天贝乎,我揣著相機(jī)與錄音,去河邊找鬼叽粹。 笑死览效,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的虫几。 我是一名探鬼主播锤灿,決...
    沈念sama閱讀 38,382評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼辆脸!你這毒婦竟也來了但校?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,006評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤啡氢,失蹤者是張志新(化名)和其女友劉穎状囱,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體倘是,經(jīng)...
    沈念sama閱讀 43,512評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡亭枷,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,965評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了搀崭。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片叨粘。...
    茶點(diǎn)故事閱讀 38,094評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖瘤睹,靈堂內(nèi)的尸體忽然破棺而出宣鄙,到底是詐尸還是另有隱情,我是刑警寧澤默蚌,帶...
    沈念sama閱讀 33,732評(píng)論 4 323
  • 正文 年R本政府宣布冻晤,位于F島的核電站,受9級(jí)特大地震影響绸吸,放射性物質(zhì)發(fā)生泄漏鼻弧。R本人自食惡果不足惜设江,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,283評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望攘轩。 院中可真熱鬧叉存,春花似錦、人聲如沸度帮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽笨篷。三九已至瞳秽,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間率翅,已是汗流浹背练俐。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評(píng)論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留冕臭,地道東北人腺晾。 一個(gè)月前我還...
    沈念sama閱讀 45,536評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像辜贵,于是被迫代替她去往敵國和親悯蝉。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,828評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,514評(píng)論 25 707
  • 生命的理解可以借用太陽 人生的軌跡卻是一路向西 跑馬觀花的路過 駐足常留的深刻 只是為了未來那一刻 鉛華的洗去 依...
    黑夜no煙絲閱讀 395評(píng)論 0 2
  • 堅(jiān)持早睡對(duì)我而言是個(gè)難題托慨,一向不懂克制泉粉,不懂掌控自己,沒有自律榴芳。 我要學(xué)會(huì)堅(jiān)持早睡嗡靡,對(duì)自己好點(diǎn),學(xué)會(huì)自律窟感,對(duì)人生好...
    0426我愛靜靜閱讀 193評(píng)論 0 0