使用调色板和毕加索

时间:2015-05-14 02:59:20

标签: android retrofit picasso palette

我正在使用调色板来获取颜色并将其设置为文本和背景颜色。我按照以下帖子关注使用调色板和picasso

http://jakewharton.com/coercing-picasso-to-play-with-palette/

我第一次成功地使用调色板应用了获取颜色,但是当我得到304未修改状态时,未调用onSuccess()并且未应用调色板转换

 PaletteTransformation paletteTransformation = new PaletteTransformation();
        Picasso.with(mContext).load(url).
                transform(paletteTransformation).
                into(holder.characterImage, new Callback.EmptyCallback() {
                    @Override
                    public void onSuccess() {
                        super.onSuccess();
                        Palette palette = paletteTransformation.getPalette();
                        Typeface typeface = Typeface.createFromAsset(mContext.getAssets(), "Roboto-Thin.ttf");
                        holder.characterName.setTypeface(typeface);
                        if (palette != null) {
                            Palette.Swatch swatch =  palette.getVibrantSwatch();
                            holder.characterName.setBackgroundColor(palette.getVibrantColor(0));
                            if(swatch!=null)
                                holder.characterName.setTextColor(swatch.getTitleTextColor());
                        }
                    }
                });

2 个答案:

答案 0 :(得分:6)

我最终使用了这个库https://github.com/florent37/PicassoPalette

答案 1 :(得分:0)

您应该从毕加索获取图像并将其转换为位图。 因为Palette与Bitmap一起使用。 当您的位图准备就绪时,使用以下代码通过调色板从位图获取颜色:

Bitmap bitmap = ((BitmapDrawable) collapsingImage.getDrawable()).getBitmap();
Palette palette = Palette.from(bitmap).generate();

color1 = palette.getDominantColor(getResources().getColor(defaultColor));
color2 = palette.getDarkVibrantColor(getResources().getColor(defaultColor));
color3 = palette.getVibrantColor(getResources().getColor(defaultColor));

如果您有位图,则不需要这一行(您可以从毕加索获得位图):

Bitmap bitmap = ((BitmapDrawable) collapsingImage.getDrawable()).getBitmap();

这是这些代码所需要的:

int defaultColor = R.color.colorPrimary;
public static int color1, color2, color3;