Palette优化界面色彩搭配
生活随笔
收集整理的這篇文章主要介紹了
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优化界面色彩搭配的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SQLServer之创建非聚集索引
- 下一篇: 哈工大计算机网络Week2-网络应用数据