时间:2021-05-19
在Android开发过程中我们常遇到将某个图形的颜色改变(例如用圆点的不同颜色来代表不同的状态)
像这样的需求,一般我们使用android的shape就可以实现,比如
<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> <size android:width="80dp" android:height="80dp"/> <stroke android:width="10dp" android:color="#FF0000"/> <solid android:color="#000"/> </shape>如果有多种颜色,那么我们可以写多个这样的shape,然后去使用。but。。。这样似乎太麻烦了,如果有10几种颜色,文件可能巨多。因此下面介绍一种写法可以动态改变图形的颜色。
1、首先获取我们自定义的一个shape
val normal = ContextCompat.getDrawable(requireContext(), R.drawable.pw_calendar_isuue_mark_danger)
2、获取到后将其转换成GradientDrawable
val normalGroup = normal as GradientDrawable
主角就是GradientDrawable
3、通过GradientDrawable的一些属性来设置颜色等
normalGroup.setStroke(dip2px(10f),Color.BLUE)
normalGroup.setColor(Color.CYAN)
iv_2.background = normalGroup
改变原来shape的画笔宽度和颜色,改变填充色,然后给图形设置上背景
看看效果
补充知识:Android代码调整ImageView图标颜色
问题:只有一套图标,图标本身的内容比较简单,但是在不同场景下需要显示不同的颜色,且只改变图标颜色,不改变透明度
解法:通过如下参数构造ColorMatrix,进而构造ColorMatrixColorFilter,然后调用ImageView.setColorFilter()方法调整图标颜色
float[] 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中图形的颜色就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
Androidshape绘制图形Android绘制图形可以使用shape也可以使用自定义控件的方式,这里我们说下shape的方式去实现。在绘制图形之前,我们先来
本文实例讲述了Android开发实现ListView点击item改变颜色功能。分享给大家供大家参考,具体如下:一、先看看效果图:二、实现步骤:1.xml布局2.
Shape是VML最基本的对象,利用它可以画出所有你想要的图形。在VML中,使用的坐标并不是Document的坐标,它有自己的坐标系,这样一来,动态改变它的坐标
本文实例讲述了Android编程使用自定义shape实现shadow阴影效果的方法。分享给大家供大家参考,具体如下:直接上xml文件,并且附上相应的解析:希望本
本文实例讲述了JQuery实现动态适时改变字体颜色的方法。分享给大家供大家参考。具体分析如下:JQuery动态适时改变字体的颜色,Ajax的效果类似,在文本框输