如何在Android图像中获得最突出的颜色

时间:2015-11-28 13:50:36

标签: android android-collapsingtoolbarlayout

我注意到Whatsapp Android有一个功能,CollapsingToolbar获得用户最突出的颜色'图像并将其设置为工具栏颜色,我尝试遍历图像并获得最突出的颜色,但横向太慢,whatsApp眨眼间做过,有人做过这个,之前告诉我如何?最后我怎么能默认设置我的CollapsingToolbar在活动刚刚打开时崩溃,我注意到它默认扩展但我希望它崩溃然后如果用户希望,他们可以通过滚动来扩展它,提前谢谢。

2 个答案:

答案 0 :(得分:3)

我不能代表WhatsApp使用的策略,但支持库确实提供了'com.android.support:palette-v7:23.1.1',它可以为您做到这一点。

Palette.generate(Bitmap toGetColorsFrom)
Palette.generate(Bitmap toGetColorsFrom, int maximumPaletteSize)
Palette.generateAsync(Bitmap toGetColorsFrom, PaletteAsyncListener listener)
Palette.generateAsync(Bitmap toGetColorsFrom, int maximumPaletteSize, PaletteAsyncListener listener)

异步方法需要Palette.PaletteAsyncListener才能通知您结果。

从这些方法中的任何一个接收Palette对象后,您可以设置工具栏backgroundColor,如下所示:

Palette palette = Palette.generate(myBitmap);
Palette.Swatch swatch = palette.getVibrantSwatch();
toolbar.setBackgroundColor(swatch.getRgb());

请注意getVibrantSwatch()是获取一组颜色的一种方法。您也可以使用:

Palette.getVibrantSwatch()
Palette.getDarkVibrantSwatch()
Palette.getLightVibrantSwatch()
Palette.getMutedSwatch()
Palette.getDarkMutedSwatch()
Palette.getLightMutedSwatch()

答案 1 :(得分:1)

对于颜色使用Palette library

要在活动打开时将折叠工具栏设置为关闭,您可以在活动中使用它来设置它。

AppBarLayout layout = (AppBarLayout) findViewById(R.id.appbarID); layout.setExpanded(false);//here appbarID is the id of your appbarlayout in your xml file containing collapsing toolbar

希望它有所帮助。