Android实现动态改变shape.xml中图形的颜色

  

在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实现动态改变shape.xml中图形的颜色

  

<强> 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中图形的颜色