在Android开发过程中我们常遇到将某个图形的颜色改变(例如用圆点的不同颜色来代表不同的状态)
像这样的需求,一般我们使用安卓的形状就可以实现,比如
& lt; & # 63; xml version=" 1.0 " encoding=" utf - 8 " & # 63;比; & lt;形状xmlns: android=" http://schemas.android.com/apk/res/android " android:形状=巴衷病北? & lt;大小android:宽度=" 80 dp“android:身高=?0”dp/祝辞 & lt;中风android:宽度=" 10 dp”android:颜色=" # FF0000 "/比; & lt;固体android:颜色=" # 000 "/比; & lt;/shape>
如果有多种颜色,那么我们可以写多个这样的形状,然后去使用,但……这样似乎太麻烦了,如果有10几种颜色,文件可能巨多,因此下面介绍一种写法可以动态改变图形的颜色。
<强> 1,首先获取我们自定义的一个形状强>
val正常=ContextCompat.getDrawable (requireContext (), R.drawable.pw_calendar_isuue_mark_danger)
引用><强> 2,获取到后将其转换成GradientDrawable 强>
val normalGroup=正常GradientDrawable
引用>主角就是GradientDrawable
<强> 3,通过GradientDrawable的一些属性来设置颜色等强>
normalGroup.setStroke (dip2px (10), Color.BLUE)
引用>
normalGroup.setColor (Color.CYAN)
iv_2。背景=normalGroup改变原来的形状画笔宽度和颜色,改变填充色,然后给图形设置上背景
看看效果
<强> Android代码调整ImageView图标颜色强>
问题:只有一套图标,图标本身的内容比较简单,但是在不同场景下需要显示不同的颜色,且只改变图标颜色,不改变透明度
解法:通过如下参数构造ColorMatrix,进而构造ColorMatrixColorFilter,然后调用ImageView.setColorFilter()方法调整图标颜色
浮动[]m={
}; 引用>
0,0,0,0 R
0,0,0,0,G,
0,0,0,0 B
0,0,0,1 0
涉及到的类和方法
ImageView.setColorFilter (ColorFilter);
ColorFilter
ColorMatrix
ColorMatrixColorFilter
引用>
以上这篇Android实现动态改变shape.xml中图形的颜色就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
Android实现动态改变shape.xml中图形的颜色