我的工具栏上有一个循环的ProgressBar,以显示正在发生的一些不确定的进展,但是ProgressBar的默认样式(我知道的唯一一个使它成为循环环的样式)是与工具栏相同的颜色( 'colorPrimary‘颜色)。
我尝试过的样式是?android:attr/progressBarStyleLarge和?android:attr/progressBarStyleLargeInverse,它们的颜色都与工具栏相同,因此它们是不可见的。
我读到,我可以通过应用这样的颜色过滤器来改变颜色:
toolbarProgress.getIndeterminateDrawable().setColorFilter(Color.WHITE, PorterDuff.Mode.MULTIPLY);然而,我找不到一个“PorferDuff.Mode”将一个彩色图像转换成一个完全白色的图像(同时保持alpha透明)。
与使用PorterDuff模式不同,我还可以应用ColorMatrix。例如,要将其转换为灰度,我可以使用以下方法:
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的颜色..?
发布于 2015-06-15 16:18:32
一定要是ColorMatrixColorFilter吗?您可以使用DrawableCompat对Drawables进行着色。
Drawable drawable = DrawableCompat.wrap(progressBar.getIndeterminateDrawable());
DrawableCompat.setTint(drawable, Color.WHITE);
toolbarProgress.setIndeterminateDrawable(drawable);https://stackoverflow.com/questions/30847630
复制相似问题