Android Tint的使用及源码分析

本文探讨了Android中Tint的使用,包括通过android:tint属性为图片和背景着色,使用selector进行状态变化着色,以及Tint的原理和兼容低版本的解决方案。示例展示了Tint如何简化开发过程,减少资源消耗。
摘要由CSDN通过智能技术生成

背景

在菜单栏改版开发中,发现需要引入大量图片,其中像设置开关部分差异仅在颜色,但是需要两张图片。这样包体随着图片的添加也会变大。有没有更好的办法呢?

使用Tint实现

Android在5.0的时候推出Tint可以很方便的将一张图片”着色”为任何颜色。这样我们只需要放一张图片即可。

  1. 使用 android:tint 以及 android:tintMode 属性设置您的布局中的着色颜色和模式。
    <ImageView
            android:id="@+id/img_tint_1"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:background="@android:color/darker_gray"
            android:scaleType="center"
            android:src="@drawable/icon_test_tint"/>

        <ImageView
            android:id="@+id/img_tint_2"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:background="@android:color/darker_gray"
            android:scaleType="center"
            android:src="@drawable/icon_test_tint"
            android:tint="@color/blue"/>

两个imageView是一样的,为了好展现结果,都添加了一个灰色背景。第二个添加了 android:tint属性,结果如下:
这里写图片描述
我们发现,我们的白色图标被“着色”为我们自己设置的蓝色。是不是很方便呢?

  1. 使用 setTint() 方法为 BitmapDrawable 或 NinePatchDrawable 对象着色。
    使用代码方式也比较简单
    ImageView imageView &#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值