Tinting着色 -- 改变图标颜色

Tinting着色 — 改变图标颜色

开发中经常遇到叫改变图标颜色的需求,叫美工重新切图麻烦还耗时。

Android5.0之后,可以通过XML文件中设置tint和tintMode属性实现,5.0之前要用support-v7包下的AppCampatxxxView控件
然后通过代码实现。

原理

通过给图片上一层遮罩颜色,从而改变图片的原始颜色

Android 5.0之后直接再XML中使用
    <ImageView
        android:layout_width="80dp"
        android:layout_height="80dp"
        android:layout_marginTop="10dp"
        android:src="@drawable/square_gray" />

    <ImageView
        android:layout_width="80dp"
        android:layout_height="80dp"
        android:layout_marginTop="10dp"
        android:src="@drawable/square_gray"
        android:tint="@android:color/holo_blue_bright" />

    <ImageView
        android:layout_width="80dp"
        android:layout_height="80dp"
        android:layout_marginTop="10dp"
        android:src="@drawable/square_gray"
        android:tint="@android:color/holo_blue_bright"
        android:tintMode="add" />

    <ImageView
        android:layout_width="80dp"
        android:layout_height="80dp"
        android:layout_marginTop="10dp"
        android:src="@drawable/square_gray"
        android:tint="@android:color/holo_blue_bright"
        android:tintMode="multiply" />
Android 5.0之前使用方式

XML文件中

    <android.support.v7.widget.AppCompatImageView
        android:id="@+id/iv"
        android:layout_width="80dp"
        android:layout_height="80dp"
        android:layout_marginTop="10dp"
        android:src="@drawable/square_gray" />

Activity中

        AppCompatImageView iv = findViewById(R.id.iv);
        ColorStateList lists = getResources().getColorStateList(android.R.color.holo_blue_bright);
        iv.setSupportImageTintMode(PorterDuff.Mode.ADD);
        iv.setSupportImageTintList(lists);
    原文作者:懒猫1105
    原文地址: https://www.jianshu.com/p/a1774a55a967
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞