- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
假设我在 Android 中有一个 ShapeDrawable。不是位图。我想用另一种颜色动态替换其中的单一颜色(描边颜色)。新的所需颜色在设计时是未知的,不能放入可绘制资源中。
以图1为例(黑色代表我要替换的颜色,方格背景是未被形状轮廓覆盖的背景):
到图 2,红色是我想要的颜色:
如有必要,我可以使用 alpha 蒙版构建形状 - 例如,如有必要,让白色或黑色透明,或者将轮廓设为绿色。白色填充颜色必须在最终结果中保持白色。
是否可以使用标准滤色器 - ColorMatrixColorFilter 或 PorterDuffColorFilter 来实现?如果是这样,我很难找出具体的过滤器。我假设自定义 ColorFilter 是不可能的。
最佳答案
在您想要设置为任意颜色的黑色边框和白色内部的特定情况下,您可以使用 PorterDuff在 ADD 模式下过滤。由于它是饱和的,因此不会对白色区域产生任何影响,并且由于黑色为零,因此添加颜色会有效地将所有黑色区域设置为该颜色。
例如将其设置为红色:
drawable.setColorFilter(0x00ff0000, PorterDuff.Mode.ADD);
关于android - 将 ShapeDrawable 中的单一(黑色)颜色替换为 Android 中的另一种颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31015537/
我试图在另一个圆圈内画一个较小的圆圈。这看起来很简单,但我遇到了麻烦,找不到答案。我使用的代码是: ShapeDrawable biggerCircle= new ShapeDrawable(
我正在尝试制作一个 ShapeDrawable,但是当我调整它的大小时,Android 会绘制一条模糊的线。我知道一些示例代码说这不会发生,所以我不明白我做错了什么。这是我写的: Path pathT
我正在尝试使用扩展 ShapeDrawable 的类(请参阅 here )绘制一个带有边框的圆角矩形,并且一切正常,除了 shapedrawable 似乎切断了一些边框,因为形状本身不会超出这些范围。
我正在尝试以编程方式创建 ShapeDrawable,但以下代码未显示任何内容。 ImageView image = new ImageView (context); image.setLayoutP
我有一个ShapeDrawable: final ShapeDrawable drawable = new ShapeDrawable(shape); drawable.getPaint().setS
我想要实现的是使用其中包含几个图层的 Drawable,但在运行时控制一些值,例如渐变的 startColor。这是我在 my_layered_shape.xml 中的内容:
我正在自定义 android View 中通过 Canvas 绘制许多 ShapeDrawable。我有一个 onTouchEvent 方法,它工作正常。一切正常。现在我希望能够检测触摸事件是否与某个
我有一个在 XML 中定义的 ShapeDrawable,具有给定的笔划宽度和圆角半径。 我想以编程方式更改笔划宽度和可绘制对象的颜色。我可以更改 Drawable 的颜色,
嗨我想创建一个可绘制的形状并用白色描边的渐变色填充它这是我的代码 ShapeDrawable greenShape = new ShapeDrawable(new RectShape());
我正在尝试以编程方式制作具有不同渐变的按钮。我使用 ShapeDrawable,它就像一个魅力。 RoundRectShape rs = new RoundRectShape(new float[]
在包含自定义 Shape 的 ShapeDrawable 上调用 setTint() 似乎对基础形状的颜色没有影响。 CustomShape.kt class CustomShape : Shape(
我正在尝试创建一个绘制以下路径的 ShapeDrawable: Path path = new Path(); path.moveTo(50, 20); path.lineTo(0, 50); pat
我是 Android 开发新手,对 ShapeDrawable 和 GradientDrawable 类有些困惑。有什么区别? 最佳答案 形状定义了矩形、椭圆形、线形或环形等形状。渐变用于定义形状的外
我正在尝试在 Android 中实现绘图应用程序。用户应该能够在其中选择和移动绘制的形状。 目前我已经在我的绘图 Canvas 上静态绘制了一些矩形和文本: View mDrawing
我以编程方式创建了一个 ShapeDrawable 并希望在 ImageView 中显示它。如果我使用 ImageView.setImageDrawable(),我将无法看到 ShapeDrawabl
我正在为 LinearLayouts 背景使用 ShapeDrawable。形状是由 cod 制作的,因为我需要根据条件动态地为它们分配颜色。这是我的自定义形状 public class Custom
我的项目要求在运行时动态绘制一个圆圈。因此,为此我使用 ShapeDrawable 以编程方式创建圆,但不幸的是,我在 ShapeDrawable 中找不到用于 CircleShape 的任何类或方法
我在 Canvas 上绘制了一个 shapedrawables,我想在触摸事件中检测哪些形状被触摸了。 无需通过 (x,y) 计算,就像存在于 html 中一样自动..谢谢! :) 我成功地绘制了形状
我创建了一个 ShapeDrawable 并将其放置在我的布局中动态创建的 ImageView 中。这是我用来将可绘制对象分配给我的 ImageView 的代码。请注意,我调用了一种方法来设置随机颜色
我有一个 TabHost,我在其中使用形状 xml 使其看起来像这样: 我这样定义 TabHost 背景: private void setTabColor(TabHost tabHost) {
我是一名优秀的程序员,十分优秀!