首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何改变矢量可绘制路径的颜色点击按钮

如何改变矢量可绘制路径的颜色点击按钮
EN

Stack Overflow用户
提问于 2016-02-25 10:48:04
回答 7查看 63.2K关注 0票数 51

有了新的android支持更新,矢量绘图就可以向后兼容。我有一个有不同路径的矢量图像。我希望路径的颜色在单击按钮时更改,或者根据输入值以编程方式更改。是否可以访问向量路径的名称参数?然后改变颜色。

EN

回答 7

Stack Overflow用户

发布于 2016-04-04 10:44:24

使用setTint可以改变整个矢量的颜色。

必须在布局文件中设置ImageView,如下所示:

代码语言:javascript
运行
复制
<ImageView
    android:id="@+id/myImageView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:tint="@color/my_nice_color"
    android:src="@drawable/ic_my_drawable"
    android:scaleType="fitCenter" />

然后,要更改图像的颜色:

代码语言:javascript
运行
复制
DrawableCompat.setTint(myImageView.getDrawable(), ContextCompat.getColor(context, R.color.another_nice_color));

注意:如果将向量绘图设置为imageView作为背景,则imageView会给出空例外。

票数 58
EN

Stack Overflow用户

发布于 2018-02-07 12:15:26

有几种方法可以做同样的事情,但是这对于Vector SVG (本地/网络)都是有效的。

代码语言:javascript
运行
复制
imageView.setColorFilter(ContextCompat.getColor(context, 
R.color.headPink), android.graphics.PorterDuff.Mode.SRC_IN);

(用您选择的颜色更改R.color.headPink )

票数 8
EN

Stack Overflow用户

发布于 2017-11-07 16:10:38

可以在运行时更改单个路径的颜色,而无需使用反射。

VectorMaster引入了对矢量图形的动态控制。可以使用这个库动态地(通过Java实例)控制向量绘图的每个方面。

只需在应用程序的build.gradle中添加以下依赖项

代码语言:javascript
运行
复制
dependencies {
    compile 'com.sdsmdg.harjot:vectormaster:1.0.9'
}

在您的情况下,您需要进行简单的颜色更改:

向量示例: your_vector.xml

代码语言:javascript
运行
复制
<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="24dp"
    android:height="24dp"
    android:viewportWidth="24.0"
    android:viewportHeight="24.0">
<path
    android:name="outline"
    android:pathData="M20.84,4..."
    android:strokeColor="#5D5D5D"
    android:fillColor="#00000000"
    android:strokeWidth="2"/>

XML

代码语言:javascript
运行
复制
<com.sdsmdg.harjot.vectormaster.VectorMasterView
    android:id="@+id/your_vector"
    android:layout_width="150dp"
    android:layout_height="150dp"
    app:vector_src="@drawable/your_drawable" />

Java

代码语言:javascript
运行
复制
VectorMasterView heartVector = (VectorMasterView) 
findViewById(R.id.your_drawable);

// find the correct path using name
PathModel outline = heartVector.getPathModelByName("outline");

// set the stroke color
outline.setStrokeColor(Color.parseColor("#ED4337"));

// set the fill color (if fill color is not set or is TRANSPARENT, then no fill is drawn)
outline.setFillColor(Color.parseColor("#ED4337"));

出发地:https://github.com/harjot-oberai/VectorMaster,麻省理工学院授权。

您现在可以完全控制矢量绘图了。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35625099

复制
相关文章

相似问题

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