[Android] 修改ImageView的图片颜色

有两种方法:

方法1:

ImageView imageView = (ImageView) findViewById(R.id.arrow_image);
Drawable tipsArrow = imageView.getDrawable();                    
tipsArrow.setColorFilter(mContext.getResources().getColor(R.color.red_bg1), PorterDuff.Mode.SRC_ATOP);
imageView.setImageDrawable(tipsArrow);

 

方法2:

ImageView imageView = (ImageView) findViewById(R.id.arrow_image);
Bitmap baseBitmap = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.img_pop_arrow);
Bitmap afterBitmap = Bitmap.createBitmap(baseBitmap.getWidth(), baseBitmap.getHeight(), baseBitmap.getConfig());
Canvas canvas = new Canvas(afterBitmap);
Paint paint = new Paint();
float[] src = new float[]{0, 0, 0, 0, 253,0, 0, 0, 0, 54,0, 0, 0, 0, 102,0, 0, 0, 1, 0
};
ColorMatrix colorMatrix = new ColorMatrix();
colorMatrix.set(src);
paint.setColorFilter(new ColorMatrixColorFilter(src));
canvas.drawBitmap(baseBitmap, new Matrix(), paint);
imageView.setImageBitmap(afterBitmap);

 

方法1比方法2更加简洁,但会有个问题,如果同个activity里面,有多个ImageView,每个ImageView操作的图片路径都是一样的,那么它们是会互相影响的。

比如,第一个ImageView要将图片设置为绿色,第二个ImageView要将图片设置为红色,那么出来的结果就是有问题,两张都变成绿色了。

 

方法2虽然比方法1复杂,但可以避免以上问题。同时它使用了ColorMatrix,这是个有趣的东西,值得深入研究,这里就不展开说。

 

Have fun with Android!

转载于:https://www.cnblogs.com/davidhhuan/p/6056614.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/285536.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

四叉树算法

2019独角兽企业重金招聘Python工程师标准>>> title: 四叉树算法 date: 2016-1-11 15:10 categories: IOS tags: 算法 小小程序猿我的博客:http://daycoding.com 转载:http://blog.csdn.net/zhanxinhang/article/details/6706217 高德iOS聚合…

2019年中国教育信息化行业研究报告

2019年中国教育信息化行业研究报告 教育行业丨研究报告 本文转自:艾瑞咨询 核心摘要: 教育信息化2.0时代,教育相关政府/学校以更开放的姿态对待社会各类业态的进入,共建共享优质教育资源,提升教育公平与教育质量。同…

C语言试题109之将一个正整数分解质因数。例如:输入 90,打印出 90=2乘3乘3乘5

✅作者简介:大家好我是码莎拉蒂,CSDN博客专家🥇🥇🥇 📃个人主页:个人主页 🔥系列专栏:C语言试题200例 💬推荐一款模拟面试、刷题神器👉 点击跳转进入网站 1、题目 题目:将一个正整数分解质因数。例如:输入 90,打印出 90=233*5。 分析:对 n 进行分解质因…

【ArcGIS遇上Python】使用add-in向导开发ArcGIS插件(1):add-in工具介绍及安装

文章目录 addin介绍addin开发方式Python Add-In开发addin下载addin安装基于ArcObject/ArcGIS Engine的Add-In开发addin介绍 ArcGIS从10.0开始支持addin(ArcGIS软件中又叫作加载项)的方式进行插件制作。相对于以往9.x系列,addin的无论是从使用或者编写都更加方便快捷。通过开…

dotnet 使用 Crossgen2 对 DLL 进行 ReadyToRun 提升启动性能

我对几个应用进行严格的启动性能评估,对比了在 .NET Framework 和 dotnet 6 下的应用启动性能,非常符合预期的可以看到,在用户的设备上,经过了 NGen 之后的 .NET Framework 可以提供非常优越的启动性能,再加上 .NET Fr…

使用myeclipse建立maven项目(重要)

maven是管理项目的,myeclipse是编写代码的。第一次写项目都要配置好多东西,很麻烦,now 来看看怎样新建一个maven项目。 工具/原料 myeclipsemaven方法/步骤 因为教程使用的maven是自己下载配置的,并没有使用myeclipse自带的&#…

LeetCode 每日一题 Day 22 || 枚举(数学方法)/二分

1954. 收集足够苹果的最小花园周长 给你一个用无限二维网格表示的花园,每一个 整数坐标处都有一棵苹果树。整数坐标 (i, j) 处的苹果树有 |i| |j| 个苹果。 你将会买下正中心坐标是 (0, 0) 的一块 正方形土地 ,且每条边都与两条坐标轴之一平行。 给你…

不用@微信官网了,用python给自己的微信头像加个小国旗

国旗LOGO(png透明格式): 微信头像 合成结果: import base64 import os import re from io import BytesIO from PIL import Image import tkinter as tk from tkinter import filedialog# 水印图片 可以自己指定 #markImageImage…

getContentResolver().query()方法selection参数使用详解(转)

如何在managedQuery()和getContentResolver().query()方法中实现结果去重 有时候,我们需要对查询的数据库结果进行去重。在SQL中我们可以通过distinct关键字实现,但是当我们使用android提供的managedQuery()或getContentResolver().query()方法对数据库进…

C语言试题106之有一对兔子问题

✅作者简介:大家好我是码莎拉蒂,CSDN博客专家🥇🥇🥇 📃个人主页:个人主页 🔥系列专栏:C语言试题200例 💬推荐一款模拟面试、刷题神器👉 点击跳转进入网站 1、题目 题目:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月 后每个月又…

【C#程序设计】教学讲义——第二章:简单C#程序设计

教学目录 2.1 面向对象的概念2.2 建立简单的应用程序2.3 窗体和Label控件2.4 文本框-属性2.5 按钮控件本章小结2.1 面向对象的概念 2.1.1 对象和类 1.对象 对象是客观世界中对象的模型化。对象是有着特殊数据(属性)与操作(行为)的实体,对象的操作(行为)称为方法。 程…

Blazor University (34)表单 —— 获得表单状态

原文链接&#xff1a;https://blazor-university.com/forms/accessing-form-state/获得表单状态源代码[1]有时&#xff0c;我们需要获得 <EditForm> 子内容中的表单状态。最常见的用途是当我们需要访问输入的 CSS 类时&#xff0c;指示输入是否被修改或有效/无效。例如&a…

[转]c# 中间件 的扩展模型(.net webapi/.net Core 的 MiddleWare 处理模型)

在学习 asp.net WebApi 或者asp.net Core 的时候&#xff0c;它们管道的处理模型跟 asp.net MVC/WebForm 的管道模型是不一样的。 asp.net WebApi 或者asp.net Core 他们使用了一种叫做“中间件”的处理模型&#xff0c;相对于传统管道模型&#xff0c;剔除了很多非必要的处理…

AIX 环境下遇到Device Busy问题

IBM AIX v5.3操作系统环境下在对网络或网卡进行操作过程中经常遇到"Device Busy"而终止操作例如:#rmdev -l ent1遇到如下返回信息Method error (/etc/methods/ucfgdevice):0514-062 Cant perform the requested function because the speciafield.device is busy. 解…

mykernel编译过程中问题解决

fatal error: linux/compiler-gcc5.h: No such file or directorycompilation terminated.解决方法:https://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/plain/include/linux/compiler-gcc5.h?id2c07053b8e1e0c22bb54dfbdf8e86a70f8bf00fc复制内容保存为c…

C#中的 Attribute 与 Python/TypeScript 中的装饰器是同个东西吗

前言最近成功把「前端带师」带入C#的坑&#xff08;实际是前端带师开始从cocos转unity游戏开发了&#xff09;某天&#xff0c;「前端带师」看到这段代码后问了个问题&#xff1a;[这个是装饰器]&#xff1f;[HttpGet] public Response Get() {return ... }我第一反应觉得不是&…

【ArcGIS Engine二次开发】入门基础(1):ArcGIS Engine简介及开发环境搭建

文章目录ArcGIS Engine概述ArcGIS Engine与ArcObjects的关系ArcGIS Engine下载及安装ArcGIS Engine概述 ArcGIS Engine简介 ArcGIS Engine是ESRI公司在2004年推出的用于开发C/S架构GIS应用软件的工具包&#xff0c;是将用于构建ArcGIS整套产品的组件库——ArcObjects的比分功…

微软Visual Studio 2019版本16.3 正式发布,支持 .NET Core 3.0

微软正式发布了Visual Studio 2019 16.3版本&#xff0c;主要更新内容如下&#xff1a; .NET Core 3.0 Visual Studio版本16.3包括对 .NET Core 3.0 的支持。 注意&#xff1a;如果使用的是.NET Core 3.0&#xff0c;则需要使用Visual Studio 16.3或更高版本。 .NET Core桌…

C语言试题120之输入两个正整数 m 和 n,求其最大公约数和最小公倍数

✅作者简介:大家好我是码莎拉蒂,CSDN博客专家🥇🥇🥇 📃个人主页:个人主页 🔥系列专栏:C语言试题200例 💬推荐一款模拟面试、刷题神器👉 点击跳转进入网站 1、题目 题目:输入两个正整数 m 和 n,求其最大公约数和最小公倍数 分析:利用辗除法 2 、温馨提示…

spring+springMvc+mybatis 调用oracle 存储过程

最近在项目中遇到在mybatis中调用oracle存储过程的问题&#xff0c;网上各种查询&#xff0c;最终解决了问题&#xff0c;在我们项目中我只需要oracle 的存储过程返回一个字符串用来存入数据库作为表数据的主键&#xff0c; 接下来整理代码&#xff1a; 首先构建存储过程getSeq…