成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

主題顏色提取 ——— Palette

移動開發 Android
調色板 Palette 是 Android L SDK 中的新特性。可以使用 Palette 從圖像中提取出突出的顏色(主色調),獲取到顏色之后我們再將這個顏色值賦給 ActionBar、狀態欄等。從而達到界面色調的統一,使界面美觀協調。

[[184124]]

Palette

調色板 Palette 是 Android L SDK 中的新特性。可以使用 Palette 從圖像中提取出突出的顏色(主色調),獲取到顏色之后我們再將這個顏色值賦給 ActionBar、狀態欄等。從而達到界面色調的統一,使界面美觀協調。

Palette 可以提取圖片中如下幾種特性的顏色:

  • Vibrant (有活力的)
  • Vibrant dark(有活力的 暗色調)
  • Vibrant light(有活力的 明亮)
  • Muted (柔和的)
  • Muted dark(柔和的 暗色調)
  • Muted light(柔和的 明亮)

內部嵌套類

  • Palette.Builder

生成器類,生成 Palette 實例。

  • Palette.Filter

過濾器接口,使 Palette 有更加細膩的顏色過濾

  • Palette.PaletteAsyncListener

異步加載監聽

  • pattle.Swatch

提供獲取結果的色彩樣本

所有的公共方法

返回值類型 方法及說明
static Palette from(List<Palette.Switch> switches)
通過預設的 Palette.Swatch 顏色樣本列表 來生成 Palette
static Palette.Builder from(Bitmap bitmap)
通過返回 Palette.Builder 實例來構建 Palette
static Palette generate(Bitmap bitmap,int numColors)
該方法已被遺棄,建議用 Palette.Builder 來生成Palette
static Palette generate(Bitmap bitmap)
該方法已被遺棄,建議用 Palette.Builder 來生成Palette
static AsyncTask<Bitmap,Void,Palette> generateAsync(Bitmap bitmap,int numColor,Palette.PaletteAsyncListener listener)
該方法已被遺棄,建議用 Palette.Builder 來生成Palette
static AsyncTask<Bitmap,Void,Palette> generateAsync(Bitmap bitmap,Palette.PaletteAsyncListener listener)
該方法已被遺棄,建議用 Palette.Builder 來生成Palette
int getColorForTarget(Target target,int defaultColor)
返回一個從目標獲取的的 rgb 色值
int getDarkMutedColor(int defaultColor)
返回一個柔和的暗色調 rgb 值
Palette.Swatch getDarkMutedSwatch()
返回一個柔和的暗色調樣本類
int getDarkVibrantColor(int defaultColor)
返回一個鮮明的暗色調 rgb 值
Palette.Swatch getDarkVibrantSwatch()
返回一個鮮明的暗色調樣本類
int getDomainColor(int defaultColor)
返回 Palette 中的主色調 rgb值
Palette.Swatch getDomainSwatch()
返回一個主色調的樣本類
int getLightMutedColor(int defaultColor)
返回一個柔和的亮色調顏色 rgb
Palette.Swatch getLightMutedSwatch()
返回一個柔和的亮色調樣本類
int getLightVibrantColor(int defaultColor)
返回一個鮮明的亮色調 rgb
Palette.Swatch getLightVibrantSwatch()
返回一個鮮明的亮色調樣本類
int getMutedColor(int defaultColor)
返回一個柔和的顏色 rgb
Palette.Swatch getMutedSwatch()
返回一個柔和的顏色樣本類
Palette.Swatch getSwatchForTarget(Target target)
為給定的目標從 Palette 中返回一個選中樣本,如果未找到則返回空
List<Palette.Swatch> getSwatches()
獲取所有用在Palette中的Swatch樣本類
List<Target> getTargets()
獲取所有構造 Palette 的 Target
int getVibrantColor(int defaultColor)
獲取一個鮮明的顏色 rgb
Palette.Swatch getVibrantSwatch()
獲取一個鮮明的樣本類

使用方式

使用 Palette 需先引入 Palette 的 support 資源包: 

  1. compile 'com.android.support:palette-v7:25.1.0' 

加載不能在主線程中進行,加載方式有同步加載和異步加載兩種:

  • 同步
  1. //在加載圖片的后臺線程中同步加載Palette palette = Palette.from(bitmap).genrate(); 
  2.  
  • 異步
  1. //異步加載Palette.from(bitmap).genrate(new PaletteAsyncListener(){  public void onGenerated(Palette p){ 
  2.       . 
  3.       . 
  4.       . 
  5.   } 
  6. });  

具體使用代碼

這里使用 MvpDemo 中的部分代碼,跟 Glide 配合起來使用的,其他輔助類代碼直接 Demo 中查看。 

  1. //這是 Glide 加載狀態的監聽回調@Overridepublic boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target,boolean isFromMemoryCache, boolean isFirstResource) {  //獲取到 Glide 加載圖片的 Bitmap 
  2.   final Bitmap bitmap = GlideUtils.getBitmap(resource);  //獲取到24dp的長度 
  3.   final int twentyFourDip = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,                  24, ZhihuStoryInfoActivity.this.getResources().getDisplayMetrics());  assert bitmap != null
  4.   Palette.from(bitmap)          //設置構建 Palette 時使用的最大顏色數,風景景觀推薦值在10-16,人臉圖像色值增加到24 
  5.           .maximumColorCount(3) 
  6.           .clearFilters() 
  7.           .setRegion(0, 0, bitmap.getWidth() - 1, twentyFourDip) 
  8.           .generate(new Palette.PaletteAsyncListener() {              @Override 
  9.               public void onGenerated(Palette palette) {                  boolean isDark;                  int lightness = ColorUtils.isDark(palette);                  if (lightness == ColorUtils.LIGHTNESS_UNKNOWN) { 
  10.                       isDark = ColorUtils.isDark(bitmap, bitmap.getWidth() / 2, 0); 
  11.                   } else { 
  12.                       isDark = lightness == ColorUtils.IS_DARK; 
  13.                   }                  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {                      int statusBarColor = getWindow().getStatusBarColor();                      final Palette.Swatch topColor = ColorUtils.getMostPopulousSwatch(palette);                      if (topColor != null && (isDark || Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)) { 
  14.                           statusBarColor = ColorUtils.scrimify(topColor.getRgb(), isDark, SCRIM_ADJUSTMENT);                          if (!isDark && Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 
  15.                               ViewUtils.setLightStatusBar(mStoryImg); 
  16.                           } 
  17.                       }                      if (statusBarColor != getWindow().getStatusBarColor()) { 
  18.                           ValueAnimator statusBarColorAnim = ValueAnimator.ofArgb( 
  19.                                   getWindow().getStatusBarColor(), statusBarColor); 
  20.                           statusBarColorAnim 
  21.                               .addUpdateListener(new ValueAnimator 
  22.                               .AnimatorUpdateListener() {                                  @Override 
  23.                                   public void onAnimationUpdate(ValueAnimator animation) { 
  24.                                       getWindow().setStatusBarColor((int) animation.getAnimatedValue()); 
  25.                                   } 
  26.                               });                                  //設置轉換顏色的動畫時間 
  27.                                   statusBarColorAnim.setDuration(1000L); 
  28.                                   statusBarColorAnim.setInterpolator(                                          new AccelerateInterpolator()); 
  29.                                   statusBarColorAnim.start(); 
  30.                       } 
  31.                   } 
  32.               } 
  33.           }); 

 

責任編輯:龐桂玉 來源: Android技術之家
相關推薦

2019-09-08 10:24:48

Linux顏色主題終端主題

2020-06-30 08:55:29

Vim文本編輯器Linux

2023-08-16 17:56:05

GeditLinux

2021-05-10 06:02:44

CSS 文字動畫技巧

2013-07-05 10:09:49

算法可視化Color

2021-08-14 22:58:24

Windows 11Windows微軟

2017-09-04 18:05:54

Palette色彩貼合

2021-03-15 08:20:15

微軟Edge瀏覽器

2018-03-28 09:00:13

CITE主題館

2021-09-15 08:21:21

VSCode Dracula OffShades of P

2013-06-09 13:45:08

好桌道

2012-09-20 15:41:31

2012-10-19 14:51:53

jQueryJSJavaScript

2011-04-11 10:12:07

Windows 7主題

2011-05-23 14:20:59

WordPress

2009-12-04 13:34:52

Windows Aer

2009-03-24 09:02:03

Windows 7主題微軟

2013-02-28 13:12:00

RSA大會RSA大會主題RSA

2023-07-07 19:16:53

GTKLinux

2017-05-18 09:00:21

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品欧美二区 | 日韩二区三区 | 久久久久久久久久久一区二区 | 亚洲高清免费观看 | 在线成人 | 拍拍无遮挡人做人爱视频免费观看 | 中文字幕一区二区三区四区 | 成人国产午夜在线观看 | 国产精品亚洲第一区在线暖暖韩国 | 久久久精品一区二区三区 | 国产精品久久久久国产a级 欧美日韩国产免费 | 久久久成人精品 | 91高清在线视频 | 国产精品一区二区三 | 精品一区二区三区四区五区 | 亚洲国产成人精品女人久久久 | 激情小说综合网 | 亚洲一区二区三区 | 日本成人中文字幕在线观看 | 韩日中文字幕 | 色综合久久久 | 91视频在线观看 | 国产精品久久久久久久久久免费看 | 国产精品视频偷伦精品视频 | 欧美大片一区 | 色婷婷av一区二区三区软件 | 8x国产精品视频一区二区 | 日本一区二区三区精品视频 | 精品伦精品一区二区三区视频 | 国产人久久人人人人爽 | 亚洲精品二区 | 欧美一区二区在线看 | 欧美一级在线观看 | 91成人免费电影 | 国产精品成人一区二区三区夜夜夜 | 一区二区欧美在线 | 青青草av在线播放 | 成人免费视频网站在线看 | 视频一区二区国产 | 超碰人人爱 | 99精品欧美一区二区蜜桃免费 |