文章目录

  • 一、Tint 着色器简介
  • 二、布局文件中的 Tint 着色器基本用法
  • 三、代码中使用 Tint 着色器添加颜色效果
  • 四、参考资料

一、Tint 着色器简介


Tint 着色器的作用是是 可以使图片变色 , 使用该机制可以显示不同颜色的图片 ;

给定一个白色图标图片 , 如果要显示不同颜色的图片 , 可以直接在 ImageView 中设置 android:tint 或 app:tint 属性 , 设置一个颜色值 , 即可将该图片显示为指定颜色的图片 ;

这样一张图片 , 可以显示多种不同颜色的效果 , 从而减少了 APK 打包的图片数量 , 减少了 APK 安装包的大小 ;

该 tint 着色器效果是将非透明的像素点 , 渲染成指定的颜色 ;

用法示例 : 布局文件中 , 在 ImageView 标签中添加属性 app:tint="@color/purple_700" , 即可为其设置一个渲染颜色 ;

    <ImageViewandroid:layout_width="100dip"android:layout_height="100dip"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintLeft_toLeftOf="parent"app:layout_constraintRight_toRightOf="parent"app:layout_constraintTop_toTopOf="parent"app:layout_constraintVertical_bias="0.5"app:tint="@color/purple_700"app:srcCompat="@drawable/ic_plane"/>

二、布局文件中的 Tint 着色器基本用法


Tint 基本用法就是在 ImageView 组件中添加 app:tint 属性 , 为其设置一个颜色值属性值即可 ;

布局文件示例 :

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><ImageViewandroid:layout_width="100dip"android:layout_height="100dip"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintLeft_toLeftOf="parent"app:layout_constraintRight_toRightOf="parent"app:layout_constraintTop_toTopOf="parent"app:layout_constraintVertical_bias="0"app:srcCompat="@drawable/ic_plane"/><ImageViewandroid:layout_width="100dip"android:layout_height="100dip"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintLeft_toLeftOf="parent"app:layout_constraintRight_toRightOf="parent"app:layout_constraintTop_toTopOf="parent"app:layout_constraintVertical_bias="0.5"app:tint="@color/purple_700"app:srcCompat="@drawable/ic_plane"/><ImageViewandroid:layout_width="100dip"android:layout_height="100dip"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintLeft_toLeftOf="parent"app:layout_constraintRight_toRightOf="parent"app:layout_constraintTop_toTopOf="parent"app:layout_constraintVertical_bias="1.0"app:tint="@color/teal_700"app:srcCompat="@drawable/ic_plane"/></androidx.constraintlayout.widget.ConstraintLayout>

运行效果展示 : 第一张图片是图片本身颜色 , 后面两张图片 , 分别设置了 Tint 颜色值 ;

三、代码中使用 Tint 着色器添加颜色效果


在代码中 , 通过调用 androidx.core.graphics.drawable.DrawableCompat 类的 setTint 静态方法 , 为 Drawable 类型的图片设置一个颜色值 , 首先要获取 Drawable 图片 , 然后通过 DrawableCompat 为其设置 Tint 着色效果 ;

        // 获取图片var drawable: Drawable = resources.getDrawable(R.drawable.ic_plane)// 设置图片为绿色DrawableCompat.setTint(drawable, Color.GREEN)

代码示例 :

package kim.hsl.svgimport android.graphics.Color
import android.graphics.drawable.Drawable
import android.os.Bundle
import android.widget.ImageView
import androidx.appcompat.app.AppCompatActivity
import androidx.core.graphics.drawable.DrawableCompatclass MainActivity : AppCompatActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)// 获取图片var drawable: Drawable = resources.getDrawable(R.drawable.ic_plane)// 设置图片为绿色DrawableCompat.setTint(drawable, Color.GREEN)// 设置绿色图片findViewById<ImageView>(R.id.first_image).setImageDrawable(drawable)}
}

运行效果 : 第一张图片设置成了 绿色 ;

四、参考资料


博客资源 :

  • GitHub 项目源码 : https://github.com/han1202012/SVG

  • 下载地址 : https://download.csdn.net/download/han1202012/18560112

【Android 安装包优化】Tint 着色器 ( 简介 | 布局文件中的 Tint 着色器基本用法 | 代码中使用 Tint 着色器添加颜色效果 )相关推荐

  1. 【Android 安装包优化】开启资源压缩 ( 资源压缩配置 | 启用严格模式的资源引用检查 | 自定义保留/移除资源配置 | 资源压缩效果 )

    文章目录 一.开启资源压缩 二.启用严格模式的资源引用检查 三.自定义保留/移除资源配置 四.资源压缩效果 五.完整配置 1.keep.xml 配置 2.build.gradle 构建脚本 六.参考资 ...

  2. 【Android 安装包优化】资源混淆 ( resources.arsc 资源映射表混淆 | resources.arsc 资源映射表二进制格式分析 | 混淆全局字符串池和资源名称字符串池 )

    文章目录 一.resources.arsc 资源映射表 混淆 二.resources.arsc 资源映射表二进制格式分析 三.参考资料 资源混淆时 , 需要修改混淆 resources.arsc 资源 ...

  3. 【Android 安装包优化】资源混淆 ( resources.arsc 资源映射表文件格式 | 头文件 数据格式 | 全局字符串池 数据格式 | 包数据 数据格式 | 包头 数据格式 )

    文章目录 一.resources.arsc 资源映射表文件格式 二.头文件 数据格式 三.全局字符串池 数据格式 四.包数据 数据格式 1.包头 数据格式 2.资源类型字符串池 数据格式 3.资源名称 ...

  4. 【Android 安装包优化】Android 中使用 SVG 图片 ( Android 5.0 以下的矢量图方案 | 矢量图生成为 PNG 图片 )

    文章目录 一.Android 5.0 以下的矢量图方案 二.矢量图生成为 PNG 图片 三.完整的 build.gradle 构建脚本 四.编译效果 五.参考资料 一.Android 5.0 以下的矢 ...

  5. 【Android 安装包优化】WebP 图片格式性能测试 ( 测试 WebP 图片解码速度 | 测试 WebP 图片编码速度 )

    文章目录 一.测试 WebP 图片解码速度 二.测试 WebP 图片编码速度 三.参考资料 测试结果 : WebP 格式图片 , 解码快 , 编码慢 , 占用空间小 ; 在解码速度上 , WebP 格 ...

  6. 【Android 安装包优化】资源混淆 ( AAPT2 资源编译工具 | resources.arsc 资源映射表 工作机制 )

    文章目录 一.AAPT2 资源编译工具 二.resources.arsc 资源映射表 工作机制 三.参考资料 一.AAPT2 资源编译工具 资源的编译 , 生成 R.java 文件 , 都是通过 AA ...

  7. 【Android 安装包优化】使用 lib7zr.a 静态库处理压缩文件 ( 交叉编译 lib7zr.a 静态库 | 安卓工程导入静态库 | 配置 CMakeLists.txt 构建脚本 )

    文章目录 一.修改 7zr 交叉编译脚本 Android.mk 二.完整的 7zr 交叉编译脚本 Android.mk 三.交叉编译 lib7zr.a 静态库 四.Android Studio 导入 ...

  8. 【Android 安装包优化】使用 lib7zr.so 动态库处理压缩文件 ( jni 中 main 函数声明 | 命令行处理 | jni 调用 lib7zr.so 函数库处理压缩文件完整代码 )

    文章目录 一.JNI 中 main 函数声明 二.命令字符串切割并传入 main 函数 三.完整代码示例 1.完整 jni 代码 2.完整 java 代码 3.执行结果 四.参考资料 前置博客 : [ ...

  9. 【Android 安装包优化】使用 lib7zr.so 动态库处理压缩文件 ( 测试 lib7zr.so 动态库调用 )

    文章目录 一.拷贝 p7zip 源码中的头文件到 Android Studio 项目中 二.完整代码示例 1.Java 层代码 2.JNI 层代码 3.日志头文件 4.执行结果 四.参考资料 前置博客 ...

  10. 【Android 安装包优化】使用 lib7zr.so 动态库处理压缩文件 ( 拷贝 lib7zr.so 动态库头文件到 Android 工程中 | 配置 CMakeLists.txt 构建脚本 )

    文章目录 一.拷贝 p7zip 源码中的头文件到 Android Studio 项目中 二.配置 CMakeLists.txt 构建脚本 1.导入动态库 2.导入头文件 三.完整 CMakeLists ...

最新文章

  1. @ini_get php,php中get_cfg_var()和ini_get()的用法及区别_php技巧_脚本之家
  2. java公平所与非公平所_一张图读懂Java非公平锁与公平锁
  3. java/php/c#版rsa签名以及java验签实现--转
  4. 深入学习SAP UI5框架代码系列之六:SAP UI5控件数据绑定的实现原理
  5. python3 32位_Python 3.6.8软件安装教程
  6. Python中如何把一个UTC时间转换为本地时间
  7. C和汇编混合编程----printf
  8. 四阶混合累积量matlab_12m氢燃料电池城市客车电电混合动力系统设计方案
  9. python logging模块的作用及应用场景_Python logging模块原理解析及应用
  10. C语言的环境搭建(Microsoft Visual Studio 2010的介绍与安装)
  11. QQ音乐下载器、爬虫
  12. C# 之 LINQ(一)
  13. 办公必备的WPS Office 2021 for mac(wps 2021中文版)
  14. 五种百度云盘下载速度慢解决方法
  15. matlab画二项式随机变量的pmf,概率中的PDF,PMF,CDF
  16. 【NLP】语法、文法、句法、词法概念的区别
  17. WIN32 opengl三角形绘制
  18. 软件测试实习生 带人计划 Plan for Training Inten
  19. svg图放大、缩小、拖拽
  20. module 与 component 的区别

热门文章

  1. 女孩子学电脑进入IT行业有什么优势?
  2. ZedGraph在Asp.net中的应用
  3. 最大整数(Noip1998连接多位数)
  4. 绑定变量窥测(Bind Variable Peeking)
  5. C#基础——密码加密
  6. Cracking The Coding Interview5.2
  7. Expression: _CrtIsValidHeapPointer(pUserData)
  8. 在DataGridView中添加行号
  9. Metasploit之渗透安卓实战
  10. 【Xamarin开发 Android 系列 5】 Xamarin 的破解