2015-04-25 64 views
0

我使用Palette類以編程方式從圖像中獲取最主要的顏色,然後使用它作爲狀態欄和工具欄。根據材料設計指南,狀態欄顏色應該比工具欄顏色暗兩個陰影。如何動態改變顏色的陰影android?

Bitmap bitmap = ((BitmapDrawable) ((ImageView)mImageView).getDrawable()).getBitmap(); 
    if (bitmap != null) { 
     palette = Palette.generate(bitmap); 
     vibrantSwatch = palette.getVibrantSwatch(); 
     darkVibrantSwatch = palette.getDarkVibrantSwatch(); 
    } 

對於較深的顏色,我使用darkVibrantSwatch和較淺的顏色,我使用的是vibrantSwatch。但在大多數情況下,這些結果彼此非常不同,因此基本上變得無法使用。有沒有解決方法? 也許如果它可能只有一種顏色,比如說darkVibrantSwatch,然後以編程方式生成兩種顏色的顏色較淺?

回答

1

我不確定如何讓兩個陰影變得更輕,但是您可以使用SHADE_FACTOR來查看是否可以實現您想要的效果。

private int getDarkerShade(int color) { 
     return Color.rgb((int)(SHADE_FACTOR * Color.red(color)), 
       (int)(SHADE_FACTOR * Color.green(color)), 
       (int)(SHADE_FACTOR * Color.blue(color))); 
    } 

代碼段從here

0

行之有效是在顏色的HSV表示修改的亮度值的方式採取:

import android.graphics.Color; 
public static int modifyBrightness(int color, float factor) { 
    float[] hsv = new float[3]; 
    Color.colorToHSV(color, hsv); 
    hsv[2] *= factor; 
    return Color.HSVToColor(hsv); 
} 

要獲取狀態欄適當較深的顏色,使用因子0.8:

int darkerColor = modifyBrightness(color, 0.8);