随着新的android支持更新,矢量绘图获得向后兼容性。我有一个具有各种路径的矢量图像。我希望路径的颜色可以通过单击按钮或基于输入值以编程方式进行更改。是否有可能访问矢量路径的名称参数?然后改变颜色。如何更改按钮点击矢量绘制路径的颜色
回答
使用此功能在您的矢量绘制
VectorChildFinder vector = new VectorChildFinder(this, R.drawable.my_vector, imageView);
VectorDrawableCompat.VFullPath path1 = vector.findPathByName("path1");
path1.setFillColor(Color.RED);
库更改路径的颜色是在这里:https://github.com/devsideal/VectorChildFinder
整个矢量的颜色可以使用setTint来改变。
你必须设置你的ImageView在你的布局文件,因为这:
<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" />
然后更改图像的色彩:
DrawableCompat.setTint(myImageView.getDrawable(), ContextCompat.getColor(context, R.color.another_nice_color));
注:myImageView.getDrawable()
给出NullPointerException - 如果矢量绘制被设置为imageView作为背景。
这台色调整个绘制,但不是的特定路径矢量绘制。 – suku
设置'android:src'后必须设置'android:tint'# – rupinderjeet
令人惊叹!谢谢。 – tinyCoder
由于在这个岗位 https://stackoverflow.com/a/32007436/4969047
您表示通过@Eyal不能更改单个通道在运行时的颜色。 查看VectorDrawableCompat
的源代码,按名称公开内部元素的唯一方法是getTargetByName
,它存在于内部私有状态类VectorDrawableCompatState
的VectorDrawableCompat
中。
由于它是私人包装(默认) - 您不能使用它(除非您使用reflection)。
@Shubral,能否请您详细说明如何使用反射来实现这一点?这可能需要时间,但会帮助大量的人。 – suku
查看我对这个问题的回答:https://stackoverflow.com/a/38418049/1335438。
如何通过使用主题和参数化路径以便能够动态设置它是一个很好的主意。
你可以使用这个方法来改变颜色下的API,从而改变矢颜色片段
int myVectorColor = ContextCompat.getColor(getActivity(), R.color.colorBlack);
myButton.getIcon().setColorFilter(myVectorColor, PorterDuff.Mode.SRC_IN);
到位getActivity的你应该使用MainActivity.this在活动改变矢量颜色
你可以在运行时更改单个路径的颜色,而不使用反射。
VectorMaster引入了对矢量绘图的动态控制。使用这个库可以动态地(通过Java实例)控制vector drawable的每个方面。
只需添加以下依赖于你的应用程序的的build.gradle
dependencies {
compile 'com.sdsmdg.harjot:vectormaster:1.0.9'
}
在你的情况,你需要一个简单的颜色变化:
向量例如:your_vector。XML
<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:
<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:
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,MIT授权。
您现在可以完全控制矢量绘图。
有做同样的东西的几种方法,但是这同时适用于矢量绘图资源以及SVG(本地/网络)。
imageView.setColorFilter(ContextCompat.getColor(context,
R.color.headPink), android.graphics.PorterDuff.Mode.SRC_IN);
- 1. 如何更改颜色点击按钮?
- 2. 更改点击按钮的颜色
- 3. 点击更改javafx按钮颜色?
- 4. 点击更改按钮颜色
- 5. 如何更改未点击的按钮的背景颜色?
- 6. Xcode - 更改按钮上的按钮背景颜色点击
- 7. 如何更改按钮上的textView文本颜色点击
- 8. 如何保存在用户点击的按钮更改颜色
- 9. 如何在点击按钮时更改矩形的颜色?
- 10. 离子 - 如何更改点击时的按钮颜色
- 11. 如何在Android中点击时更改按钮的颜色?
- 12. 如何更改(并保持)点击按钮的颜色
- 13. 如何更改按钮的颜色它被点击DHTMLX
- 14. 如何更改按钮上的组件颜色点击
- 15. 如何更改点击按钮的颜色
- 16. 如何更改笔在按钮上的颜色笔点击android
- 17. 如何编程修改矢量绘制的颜色的Android
- 18. 点击按钮改变ImageView的颜色?
- 19. 更改按钮点击按钮颜色暂时在C#
- 20. 如何更改SVG的路径颜色?
- 21. 如何将按钮背景颜色更改为点击操作?
- 22. 点击(Javascript)时如何更改按钮颜色?
- 23. 如何更改背景颜色,当我点击一个按钮
- 24. 如何在android中更改按钮选择或点击颜色?
- 25. 如何更改Android按钮点击颜色
- 26. 如何通过点击按钮来更改网格颜色?
- 27. 如何在点击切换按钮时更改背景颜色?
- 28. 更改已绘制的多边形路径的颜色
- 29. 更改点击的按钮的颜色和关断单击
- 30. 当我点击另一个按钮时如何更改按钮的颜色?
您可以调整整个矢量(与您选择的颜色改变R.color.headPink),而不是单一的路径组件 – Blackbelt