首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >应用ColorFilter / ColorMatrix将图像转成完全白色

应用ColorFilter / ColorMatrix将图像转成完全白色
EN

Stack Overflow用户
提问于 2015-06-15 14:22:29
回答 1查看 1.3K关注 0票数 1

我的工具栏上有一个循环的ProgressBar,以显示正在发生的一些不确定的进展,但是ProgressBar的默认样式(我知道的唯一一个使它成为循环环的样式)是与工具栏相同的颜色( 'colorPrimary‘颜色)。

我尝试过的样式是?android:attr/progressBarStyleLarge?android:attr/progressBarStyleLargeInverse,它们的颜色都与工具栏相同,因此它们是不可见的。

我读到,我可以通过应用这样的颜色过滤器来改变颜色:

代码语言:javascript
复制
toolbarProgress.getIndeterminateDrawable().setColorFilter(Color.WHITE, PorterDuff.Mode.MULTIPLY);

然而,我找不到一个“PorferDuff.Mode”将一个彩色图像转换成一个完全白色的图像(同时保持alpha透明)。

与使用PorterDuff模式不同,我还可以应用ColorMatrix。例如,要将其转换为灰度,我可以使用以下方法:

代码语言:javascript
复制
        ColorMatrixColorFilter filter = new ColorMatrixColorFilter(new float[] {
            0.5f, 0.5f, 0.5f, 0, 0,
            0.5f, 0.5f, 0.5f, 0, 0,
            0.5f, 0.5f, 0.5f, 0, 0,
            0, 0, 0, 1, 0
    });
    toolbarProgress.getIndeterminateDrawable().setColorFilter(filter);

同样的问题:我找不到正确的矩阵,使图像完全变成白色。灰阶接近,但它变成了灰白色,而不是纯白色。

我想要的是把所有的彩色像素变成纯白色,并让所有alpha像素保持透明。

除非有更简单的方法来更改本机ProgressBar的颜色..?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-15 16:18:32

一定要是ColorMatrixColorFilter吗?您可以使用DrawableCompatDrawables进行着色。

代码语言:javascript
复制
Drawable drawable = DrawableCompat.wrap(progressBar.getIndeterminateDrawable());
DrawableCompat.setTint(drawable, Color.WHITE);
toolbarProgress.setIndeterminateDrawable(drawable);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30847630

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档