我正在使用调色板来获取颜色并将其设置为文本和背景颜色。我按照以下帖子关注使用调色板和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());
}
}
});
答案 0 :(得分:6)
答案 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;