日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Palette优化界面色彩搭配

發布時間:2025/6/15 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Palette优化界面色彩搭配 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

什么是Palette

Palette是調色板的意思它可以通過提取Bitmap中的顏色來優化界面的色彩搭配。

Palette的使用方法

導入依賴

dependencies {...implementation 'com.android.support:palette-v7:27.1.1' }

核心方法(傳入bitmap)

Palette.from(bitmap).generate(new Palette.PaletteAsyncListener() {@Overridepublic void onGenerated(Palette palette) {// 獲取到柔和的深色的顏色(可傳默認值)palette.getDarkMutedColor(Color.BLUE);// 獲取到活躍的深色的顏色(可傳默認值)palette.getDarkVibrantColor(Color.BLUE);// 獲取到柔和的明亮的顏色(可傳默認值)palette.getLightMutedColor(Color.BLUE);// 獲取到活躍的明亮的顏色(可傳默認值)palette.getLightVibrantColor(Color.BLUE);// 獲取圖片中最活躍的顏色(也可以說整個圖片出現最多的顏色)(可傳默認值)palette.getVibrantColor(Color.BLUE);// 獲取圖片中一個最柔和的顏色(可傳默認值)palette.getMutedColor(Color.BLUE);} });

案例演示

這里使用的是Toolbar+TabLayout+ViewPager結合實現的一個效果



核心代碼:

private void setPaletteColor(int position) {Bitmap bitmap = bitmaps.get(position);Palette.from(bitmap).generate(new Palette.PaletteAsyncListener() {@Overridepublic void onGenerated(Palette palette) {Palette.Swatch vibrant = palette.getVibrantSwatch();//獲取顏色樣本。在這里做了非空判斷,如果獲取的顏色樣本為空就從所有的樣本中獲取一個樣本。if (vibrant == null) {for (Palette.Swatch swatch : palette.getSwatches()) {vibrant = swatch;break;}}// 這樣獲取的顏色可以進行改變。int rgb = vibrant.getRgb();//從樣本中獲取顏色的RGB值。獲取到RGB值之后可以直接給其他控件使用這個值,或者稍微調整這個值的顏色再使用。tablayout.setBackgroundColor(rgb);toolbar.setBackgroundColor(rgb);if (Build.VERSION.SDK_INT > 21) {Window window = getWindow();//狀態欄改變顏色。int color = changeColor(rgb);window.setStatusBarColor(color);}}});}/*** @method changeColor* @description 修改狀態欄顏色* @date: 2018/9/17 11:33* @author: LML* @param rgb 顏色值參數* @return int*/private int changeColor(int rgb) {int red = rgb >> 16 & 0xFF;int green = rgb >> 8 & 0xFF;int blue = rgb & 0xFF;red = (int) Math.floor(red * (1 - 0.2));green = (int) Math.floor(green * (1 - 0.2));blue = (int) Math.floor(blue * (1 - 0.2));return Color.rgb(red, green, blue);}

案例源碼地址:https://github.com/myml666/PalettesDemo

個人技術博客:https://myml666.github.io

總結

以上是生活随笔為你收集整理的Palette优化界面色彩搭配的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。