码迷,mamicode.com
首页 > 移动开发 > 详细

android 5.0 -- Palette

时间:2015-11-21 22:41:53      阅读:245      评论:0      收藏:0      [点我收藏+]

标签:

 Palette用来从图片资源中获取颜色内容。

下面是个对颜色值使用的工具类:
public class PaletteUtils {
    public static int getColorWithDefault(Palette palette, int defaultColor) {
        Palette.Swatch currentItem = null;

        if (currentItem == null) {
       //充满活力的颜色 currentItem
= palette.getVibrantSwatch(); } if (currentItem == null) {
       //充满活力的暗色调 currentItem
= palette.getDarkVibrantSwatch();; } if (currentItem == null) {
       //充满活力的亮色调 currentItem
= palette.getLightVibrantSwatch(); } if (currentItem == null) { //柔和色调
       currentItem
= palette.getMutedSwatch(); } if (currentItem == null) {
       //柔和暗色调 currentItem
= palette.getDarkMutedSwatch(); } if (currentItem == null) {
       //柔和亮色调 currentItem
= palette.getLightMutedSwatch(); } return currentItem != null ? currentItem.getRgb() : defaultColor; } private PaletteUtils() { throw new AssertionError(); } }

如下是从bitmap里面获取颜色内容,get是获取不同色调的颜色,然后通过getRgb()获取程序所需的真实颜色内容,

palette.generateAsync是异步的获取bitmap里面颜色的方法,里面的操作是在异步线程中的操作。

Palette.generate()不是异步的,主线程中操作。

Bitmap bitmap = BitmapFactory.decodeResource(getResources(),  
            SuperAwesomeCardFragment.getBackgroundBitmapPosition(position));  
    // Palette的部分   
    Palette.generateAsync(bitmap, new Palette.PaletteAsyncListener() {  
        /** 
         * 提取完之后的回调方法 
         */  
        @Override  
        public void onGenerated(Palette palette) {  
            Palette.Swatch vibrant = palette.getVibrantSwatch();  
            /* 界面颜色UI统一性处理,看起来更Material一些 */  
            mPagerSlidingTabStrip.setBackgroundColor(vibrant.getRgb());  
            mPagerSlidingTabStrip.setTextColor(vibrant.getTitleTextColor());  
            // 其中状态栏、游标、底部导航栏的颜色需要加深一下,也可以不加,具体情况在代码之后说明   
            mPagerSlidingTabStrip.setIndicatorColor(colorBurn(vibrant.getRgb()));  
            mToolbar.setBackgroundColor(vibrant.getRgb());  
            if (android.os.Build.VERSION.SDK_INT >= 21) {  
                Window window = getWindow();  
                // 很明显,这两货是新API才有的。   
                window.setStatusBarColor(colorBurn(vibrant.getRgb()));  
                window.setNavigationBarColor(colorBurn(vibrant.getRgb()));  
            }  
        }  
    });  

 

android 5.0 -- Palette

标签:

原文地址:http://www.cnblogs.com/androidsuperman/p/4984902.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!