动态获取drawable的主要颜色以设置工具栏颜色

时间:2015-10-17 19:41:02

标签: android background-color android-drawable android-toolbar android-collapsingtoolbarlayout

我有一个带有折叠工具栏布局的Android应用程序,用于详细视图。我试图根据传入的drawable的主要颜色动态设置工具栏的颜色。

我知道这可以通过新材料指南来实现,但我无法找到相关文档。

3 个答案:

答案 0 :(得分:1)

为此,请将以下依赖项添加到您的gradle文件

dependencies {
  compile 'com.android.support:palette-v7:21.0.0'
}

然后你可以使用generate方法,它只需要一个位图对象或一个带有整数的位图,该整数指定了调色板应该生成的颜色数。

默认情况下,此方法将尝试从提供的位图生成16种颜色。

generate(Bitmap)
generate(Bitmap, int)

您可以在此处阅读更多内容 - enter link description here

答案 1 :(得分:0)

好的,所以我从Akasha所说的开始,但是在最新版本中不推荐使用generate。所以我最终做了以下事情。

M = 51;
N = (1:1:1486);
a = 1;
x = data.Hs;
y = data.Hs;%creating array, it will me modified later
 for n = 1:1:1486;%Going threw the enitre data
   if n > (M-1)/2;%To guarantee that array index would not exceed
      y(n) = (1/M)*sum(x(n:-1:n-((M-1)/2))); %getting average
   else
    y(n) = (10/M)*n;
  end
end
 plot(data.date,data.Tp)
 hold on
 datetick('x','mm/dd')
 plot(data.date, y, '-r')

答案 2 :(得分:0)

此解决方案对我有用。我在使用onResourceReady图片加载库的同时从Glide回调中调用解决方案,该库为回调提供了resource: Drawable?参数,然后将其传递给以下函数以获取主色。如果不存在主色,则0是默认颜色。

首先在您的build.gradle中包含正确的依赖项:

implementation "androidx.palette:palette:1.0.0"

然后使用相关资源调用此函数:

private fun getDominantColor(resource: Drawable?): Int {
    return Palette.from((resource as BitmapDrawable).bitmap)
        .maximumColorCount(16)
        .generate().getDominantColor(0)
}

然后通过将响应传递到targetView.setBackgroundColor(dominantColor)

来设置所需视图的背景