- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在将 ColorFilter 应用于 Drawable
我想知道是否可以更改 drawable 的颜色但保留其中的阴影。
像这样:
如果你应用了类似的东西:
view.getBackground().setColorFilter(new PorterDuffColorFilter(itemView.getResources().getColor(R.color.green_500), PorterDuff.Mode.SRC_IN);
它将应用 ColorFilter
但保留阴影和 alpha 值。
我怎样才能做到这一点?
最佳答案
我认为您需要一个色调转换器。如果是这样,请使用 Understanding the Use of ColorMatrix and ColorMatrixColorFilter to Modify a Drawable's Hue 中提出的 ColorFilterGenerator
你只需要做:
view.getBackground().setColorFilter(ColorFilterGenerator.adjustHue(180));
结果看起来像这样(色调旋转 180 度):
注意:这个答案的所有功劳都必须归功于@Richard Lalancette 对我链接的问题的精彩回答
评论更新:
当您需要指定目标颜色时,您可以计算源和目标 HSV 值并使用 ColorFilterGenerator
来移动色调。例如:
// Your source color (The RGB color from your original image is 255,85,78)
float[] hsvSource = new float[3];
Color.RGBToHSV(255, 85, 78, hsvSource);
// The color whose hue you want to achieve (green for example)
float[] hsvTarget = new float[3];
Color.RGBToHSV(0, 200, 18, hsvTarget);
view.getBackground().setColorFilter(ColorFilterGenerator.adjustHue(hsvTarget[0] - hsvSource[0]));
请注意,此方法仅考虑颜色的色调值来改变它。
评论更新:
@Jared Rummler 的精彩回答(Understanding the Use of ColorMatrix and ColorMatrixColorFilter to Modify a Drawable's Hue)将您的可绘制对象作为参数,因此您无需指定源颜色:
view.getBackground().setColorFilter(ColorFilterGenerator.from(view.getBackground()).to(Color.GREEN));
关于android - 应用 ColorFilter 但在 PNG 文件中保留透明阴影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35080794/
关于 ColorFilter() 函数的一个简短问题;我正在尝试用新颜色替换图像的特定颜色: 默认: 结果: 所以在这个例子中我只想用蓝色替换红色。但不要修改该图像的黑色。 目前我正在使用以下代码:
好的,所以这与我之前关于 ColorMatrixColorFilter 的问题有些相关,但我觉得这是一个截然不同的问题。我想知道是否有办法 - 或者更确切地说,如何扩展 ColorFilter 类来创
我的工具栏上有一个圆形的 ProgressBar 来显示一些不确定的进度,但是 ProgressBar 的默认样式(我知道的唯一一个使它变成圆环的样式)与工具栏的颜色相同('colorPrimary
我正在尝试解决 android ColorFilters 的问题。文档很差,所以主要方法是尝试不同的变体。 问题: 有一个位图。一些像素的 alpha=255,其他像素的 alpha=0。我正在尝试绘
如何在 View 上删除或撤消 ColorFilter 或 setColorFilter? 最佳答案 您可以为调用 setColorFilter() 的同一对象调用 clearColorFilter(
今天我试着让我的 ListView 更动态一点。所以我创建了一个白色的 ninepatch-image 并使用 .setColorFilter 方法添加了一个滤色器。那不是问题。但是在应用这个之后,每
下面的函数成功改变了图片的对比度和亮度。 Bitmap bmp; ImageView alteredImageView; ... public void drawAlteredImage(float
我正在将 ColorFilter 应用于 Drawable 我想知道是否可以更改 drawable 的颜色但保留其中的阴影。 像这样: 如果你应用了类似的东西: view.getBackground(
我正在创建一些日历 View ,我想做的是为可点击的 LineairLayout 创建背景。 因此我创建了一个带有两张图片的 StateListDrawable: 背景图片 按下项目时的图像 到目前为
我有一个自定义 ImageView ,它应该可以通过编程方式或从布局中设置图标的颜色。这行得通。 假设我在黑色背景上使用了一个白色图标。 然后,如果在应用程序的另一个地方可以绘制相同的图标并反转颜色,
这就是我要画的。它有 我想要的形状(来自四个 [x/y] 坐标) 我想要的纹理(来自 bmp) 我想要的颜色(使用 ColorFilter)。 最佳答案 在程序上,这就是我最终实现目标的方式: Pat
我想在我的游戏中同时显示两辆不同颜色的汽车(比如红色和蓝色),为此我使用相同的 LayerDrawable(设置为图像两辆车的 ImageView 资源: 问题是,
我正在使用以下代码在我的一个 ImageView 上设置 ColorFilter:- views.setInt(myView, "setColorFilter", myColour); 有什么方法可以
我试图在我之前也应用过滤色器的 GridView 中获取 ImageView 的颜色。我在 Nexus 4 上运行 4.2.2 我正在像这样改变 ImageView 的颜色。在我应用滤镜之前,图像的实
我有一个带有一些菜单项的 Activity,为此我更改了图标颜色,如下所示: private void colorMenuItem(MenuItem item) { if (item != nul
我有一个 ImageView,其中 android:src 设置为 ShapedDrawable,即白色圆圈。我想要的是在运行时为这个 ImageView 着色以响应某些事件。 imgView.set
我想改变图像特定部分的亮度。我知道如何使用 ColorMatrix 更改图像的亮度(或色调)。但它将应用于整个图像。 我有一个 mask 文件(黑白图像)。我想仅在该 mask 的白色部分应用亮度变化
我似乎无法让 colorFilter Prop 与我的 .json 文件一起使用。 没有错误,但颜色显然没有改变。 我正在使用 BodyMovin 从 After Effects 导入 .json
我在 Android 5(api 21) 上使用 ImageView 时遇到奇怪的问题。当我在 xml 中设置 ImageView 色调颜色时,我无法在代码中更改它!!!我尝试了几种方法来以编程方式更
我在我的 GridView 中加载了一些图像,我想使用屏幕混合模式为它们应用微红色。 在我的适配器中我有这段代码: ImageView image = (ImageView) findViewById
我是一名优秀的程序员,十分优秀!