关键点

  • 获取目标图标的所有像素点
  • 验证像素点的alpha值,是否透明
  • 在不透明的像素点上修改为我们想要的颜色

根据输入的颜色值改变图标颜色

final EditText et = findViewById(R.id.et);
final ImageView iv = findViewById(R.id.iv);
iv.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {//获取ImageView上的图片iv.setDrawingCacheEnabled(true);Bitmap bitmap = iv.getDrawingCache();//按照输入的颜色转换图标String s = et.getText().toString();Bitmap newBitmap = changeBitmapColor(bitmap,s);iv.setDrawingCacheEnabled(false);iv.setImageBitmap(newBitmap);}
});

实现方法:

public Bitmap changeBitmapColor(Bitmap sourceBitmap,String aimColorStr){//验证参数合理if(sourceBitmap == null || sourceBitmap.isRecycled()){throw new RuntimeException("source exception!!!");}int aimColor;try {aimColor = Color.parseColor(aimColorStr.trim());} catch (Exception e){throw new RuntimeException("aimColorStr error!!!");}//按照图标的大小创建数组int mBitmapWidth = sourceBitmap.getWidth();int mBitmapHeight = sourceBitmap.getHeight();int mArrayColorLengh = mBitmapWidth * mBitmapHeight;int[] mArrayColor = new int[mArrayColorLengh];//循环bitmap 的每个像素点,查看alpha值int count = 0;for (int i = 0; i < mBitmapHeight; i++) {for (int j = 0; j < mBitmapWidth; j++) {//获得Bitmap 图片中每一个点的color颜色值int color = sourceBitmap.getPixel(j, i);int a = Color.alpha(color);if(a != 0){//不等于0 即不透明部分,设置成我们想要的颜色mArrayColor[count] = aimColor;} else {//透明仍然为透明int aimColor2 = Color.parseColor("#00000000");mArrayColor[count] = aimColor2;}count++;}}//根据数组创建新的BitmapBitmap newBitmap = Bitmap.createBitmap(mBitmapWidth,mBitmapHeight, Bitmap.Config.ARGB_8888);newBitmap.setPixels(mArrayColor,0,mBitmapWidth,0,0,mBitmapWidth,mBitmapHeight);return newBitmap;
}
  • 效果

android 动态改变图标颜色相关推荐

  1. mpvue微信小程序中使用svg图标,并通过代码动态改变图标颜色

    微信小程序,mpvue中使用svg图标,并通过代码改变图标颜色 本文主要是mpvue开发小程序的代码,不过微信小程序原生开发应该也是一样的,思路都是通用的,按照这个思路微信小程序原生开发一样可以实现同 ...

  2. android改变图标颜色

    同一个图标,但是可能会有多种背景颜色.比如,标识空气质量的图标,因空气质量有多种情形,对应的图标就有多种背景颜色. 实现这种需求有两种方式: 1.针对每一种情形,切一张对应的图标. 2.只切一张图标, ...

  3. Android动态改变TextView字体颜色

    Android动态改变TextView字体颜色 分类: Android 2012-06-04 21:56 141人阅读 评论(0) 收藏 举报 androidcolorslayout 必须在在res/ ...

  4. Android 动态改变SeekBar进度条颜色与滑块颜色

    Android 动态改变SeekBar进度条颜色与滑块颜色 遇到个动态改变SeekBar进度条颜色与滑块颜色的需求,如图: 有的是根据不同进度改变成不同颜色. 对于这个怎么做呢?大家都知道设置下pro ...

  5. 用线程实现动态改变图标

    用线程实现动态改变图标 作者:cj_ict 下载本文示例代码 前几天看了一个<如何在标题栏中显示动态图标>文章,作者为重庆建设集团一所 唐星彬.觉得用SetTimer实现起来麻烦,且占用资 ...

  6. Android开发——Java代码动态改变图片颜色

    前言 在Android开发当中,我们会遇到多张图片需要改变背景颜色,我们不能用代码写死,但是我们setBackgroundColor方法改变是会被把我们背景变成直角的,但是从用户体验感的角度来讲是带有 ...

  7. Android 动态改变桌面图标

    其实很简单,利用 AndroidManifest.xml 文件中的 <activity-alias> 标签即可实现. <activity-alias> 介绍 大家知道,对于 A ...

  8. android code修改border颜色,Android自定义TextView边框颜色(动态改变边框颜色以及字体颜色)...

    最近写了一个带边框的TextView,因为项目中有许多地方需要用到一个带边框的TextView,而且需要根据不同的状态显示不同的边框颜色,当时的第一反应就是用shape做,但后来转念一想这要需要定义多 ...

  9. android 改变图标颜色

    有时ui给了我们一个图标的颜色,但是我们需要另一种颜色,这个时候我们可以通过代码来改变图标的颜色 使用imageview.setcolorFilter(int color)即可达到效果,但是有几点需要 ...

最新文章

  1. Enterprise Library1.0 -- DataAccess Application Block
  2. UA OPTI501 电磁波 LIH介质中的平面波1 平面波的性质
  3. 循环节长度 java,第六届蓝桥杯java试题-循环节长度
  4. 牛客 - 阶乘(唯一分解定理)
  5. java math rint_Java Math.rint() 方法
  6. 了解Web及网络基础——《图解http》第一章
  7. Python为你打开一扇门
  8. VS2008超有用的快捷键
  9. ef codefirst字段类型与sqlserver表字段类型对应概要
  10. Sql Server :Could not write value to key \Software\Classes\CLSID\...., Verify that you have....
  11. 【滤波跟踪】基于多源信息融合算法实现多旋翼无人机组合导航系统含Matlab源码
  12. 刘国忠:顺周期股受资金青睐,但能走多远还是未知!
  13. 【问题整理】计算机相关
  14. dede栏目添加自定义字段方法
  15. steam饥荒云服务器搭建
  16. CSP-S 2020
  17. Windows虚拟内存
  18. python polygon_python – Polygon.contains和Polygon.within有什么区别?
  19. AtCoder Regular Contest 084
  20. python 实现读取excel中的所有sheet后,增加新的sheet,生成新的excel文件

热门文章

  1. 三、深入Javascript(1)_看智能社blue老师JS视频整理的笔记
  2. 在GSYVideoPlayer中实现VLC 内核
  3. 隐藏百度地图导航菜单栏
  4. 配线架的连接方式有哪几种?
  5. C_教程_Ubuntu安装COMSOL-MATLAB-FDTD Solutions
  6. dynamixel AX-12A
  7. 对抗生成网络学习(十)——attentiveGAN实现影像去雨滴的过程(tensorflow实现)
  8. BertTokenizer在处理中英文混合序列中遇到的问题
  9. GTP(学习笔记1)
  10. 通过依赖注入feign接口启动项目时报Error creating bean with name ‘xxxcontroller‘错误