我有一个带有折叠工具栏布局的Android应用程序,用于详细视图。我试图根据传入的drawable的主要颜色动态设置工具栏的颜色。
我知道这可以通过新材料指南来实现,但我无法找到相关文档。
答案 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)