- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在使用 imageView.setColorFilter()
时遇到问题。在我的应用程序中,我有深色模式(黑色背景、白色文本)和浅色模式(白色背景、黑色文本)。
针对 API 21+,我使用由 Android Studio 生成的矢量 Assets 图标,它是白色的,默认情况下 android:tint="#FFFFFF"
和 android:fillColor="# FF000000"
在 xml 文件中。
根据 material design , 图标有一定的 alpha 应用于不同的状态。我使用的状态是 Active + Unfocused
,其中黑色图标 = #8A000000
和白色图标 = #B3FFFFFF
。
在深色模式下,图标会在黑色背景上显示为灰色,这正是应用了 alpha 后的样子。然而,在浅色模式下,无论上面的 alpha 值如何,图标都是 100% 黑色。我使用默认 PorterDuff.Mode.SRC_ATOP
的 imageView.setColorFilter()
应用颜色。
这里发生了什么,我该如何解决?谢谢。
最佳答案
在写这个问题的时候,我尝试了一些东西,然后自己解决了这个问题。
问题是根据向量 xml,图标本身是黑色的 (#FF000000
)。 Android Studio 仅将其着色为白色。
使用 PorterDuff.Mode.SRC_ATOP
,源像素和目标像素(均为黑色)的混合因此不会导致可见变化。为了完全替换原来的图标颜色,我使用了 PorterDuff.Mode.SRC_IN
代替。在这种情况下,我可以在两种模式下使用相同的矢量 xml。
根据官方文档
PorterDuff.Mode.SRC_ATOP - Keeps the destination pixels that are not covered by source pixels. Discards destination pixels that are covered by source pixels. Discards all source pixels.
PorterDuff.Mode.SRC_IN - Keeps the source pixels that cover the destination pixels, discards the remaining source and destination pixels.
关于android - ImageView setColorFilter alpha 丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51408167/
如果我点击“Collection 夹”,心就会变成红色这是代码: holder.preferiti.setOnClickListener(new View.OnClickListener() {
我创建了一个名为btn.xml 的布局资源文件,它包含ImageView。在主要 Activity 中,我在 content_main.xml 中膨胀 btn.xml,并尝试设置膨胀 View 的背景
我的应用程序布局中有几个按钮,我想动态更改这些按钮的颜色。当我使用 b.setBackgroundColor(0xFF386F00); 颜色按预期变化,但按钮的形状、大小和填充也发生变化,如 this
我有一个扩展按钮 View 的类,我用它来创建自定义形状的按钮,例如十六进制按钮,并且仅响应实际按钮区域的点击,而不响应 View 的默认矩形形状。然而,这部分工作正常,我还希望能够更改按钮的颜色,而
这段代码有什么问题?我一直在努力获得 dwb2 ColorFiltered 几个小时,当按下这个按钮时它只显示原始资源:( public ButtonEx(Context context, Attri
如果我像这样使用 setColorFilter,它会起作用并用所选颜色绘制我的图像: int color = Color.parseColor("#FF0000"); viewHolder.Icon.
此代码使用位图的 alpha channel 绘制单一颜色(带 alpha)形状。 Bitmap alphaMask = bitmap.extractAlpha(); Paint paint = ne
我需要使用我的应用中的 HTML 颜色代码。 我正在使用: ProgressBar downloadProgressBar = (ProgressBar) findViewById(R.id.down
我正在尝试在 ImageView 上实现一个简单的颜色过滤器,以将黑色图像变成白色图像。为了实现这一点,我做了以下事情: weatherImg.setColorFilter(Color.BLA
编译器告诉我 setColorFilter 已被弃用! tab?.icon?.setColorFilter( ContextCompat.getColor(requi
为什么下面的代码没有对源位图mBitmap做任何改变? mBitmap 是一个灰度图像,我想对其应用滤色器。过滤器本身并不重要,但我对其应用的任何颜色过滤器都没有效果。绘制到屏幕上的是原始位图,就好像
我正在尝试使用 setColorFilter 为图形着色。以下代码似乎在 Lollipop 上运行良好,但似乎对 kitkat 没有影响,图标以其原始颜色呈现: Drawable icon = Con
我一直在寻找回答这个问题的帖子,但没有一个对我有用,所以我认为我对它应该如何工作存在根本性的误解。我有一个 ImageButton,它应用了一个 png 文件。除了白色箭头外,png 大部分是透明的。
我有一段代码可以在点击时改变图像按钮的色调。 这是java代码 button.setOnTouchListener(new OnTouchListener() { public bo
(我稍微改变了问题,因为现在问题更清楚了) 我的应用程序上有 4 个按钮,当用户单击某个按钮时我更改了该按钮的颜色。 单击按钮 3 时,我想将他的颜色更改为绿色,否则我想删除他的绿色滤镜(单击按钮 1
我在使用 imageView.setColorFilter() 时遇到问题。在我的应用程序中,我有深色模式(黑色背景、白色文本)和浅色模式(白色背景、黑色文本)。 针对 API 21+,我使用由 An
我使用以下行来更改 VectorDrawable 的颜色: mydrawable.getBackground().setColorFilter(颜色, PorterDuff.Mode.SRC_ATOP
如何在 View 上删除或撤消 ColorFilter 或 setColorFilter? 最佳答案 您可以为调用 setColorFilter() 的同一对象调用 clearColorFilter(
我想知道是否可以在 View 的 XML 中设置 ColorFilter 或者是否唯一的方法是使用 setColorFilter() 在 Java 中。 最佳答案 有;它被称为 tint .它在 Vi
所以我有一个 ListView,它根据列表中每个项目的优先级对图标进行颜色编码。例如,优先级为 1 的工单有一个红色工单图标。优先级 2 = 黄色等 我使用 ImageView.setColorFil
我是一名优秀的程序员,十分优秀!