Android最新的Tint,能玩出什么花?

Android最新的Tint,能玩出什么花?

最新做项目偶然发现一个并不怎么常用的功能Tint(翻译为着色)之前也看到过,但是查询api后发现只有apk 21以后才支持,所以就没怎么再看,但是刚才稍微升入一点研究了一下,发现其实只要项目中用到v4包,实际上就可以用v4包里面的DrawableCompat实现tint。

Tint可以干啥?

简单来说,我们很多在图案的按钮的点击态,现有的做法是用两张图片,例如:

这里写图片描述

这样的点击态如果用tint就可以通过对同一张图片着色,从而减少一张图片了。

此外如果结合tintMode:用法可以参考这篇文章:
http://blog.csdn.net/u010687392/article/details/47399719

那么这样的点击态也是可以通过tint做到,同样可以减少一张图片资源:
这里写图片描述

废话不说了,直接上代码

<ImageView
        android:visibility="gone"
        android:background="?attr/selectableItemBackgroundBorderless"
        android:id="@+id/close_icon"
        android:src="@drawable/close_button_selector"
        android:padding="15dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="left|top"
        android:scaleType="centerInside"/>

上面这个ImageView的background一定别遗漏,否则在api 10这样的系统就没效果了。
其中close_button_selector如下:

<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true">
        <bitmap android:src="@drawable/abc_ic_clear_mtrl_alpha"
            android:tint="@color/color_trans_0d86ff"/>
    </item>
    <item android:state_pressed="false" android:drawable="@drawable/abc_ic_clear_mtrl_alpha" />
</selector>

代码中:

.....
close_button = (ImageView) findViewById(R.id.close_icon);
if (Build.VERSION.SDK_INT < 21) {
        tintButton(close_button);
}
.....


public static void tintButton(@NonNull ImageView button) {
        ColorStateList colours = ContextCompat.getColorStateList(button.getContext(),R.drawable.button_colors);
        Drawable d = DrawableCompat.wrap(button.getDrawable());
        DrawableCompat.setTintList(d, colours);
        button.setImageDrawable(d);
    }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值