Android通过代码修改图片颜色

背景

最近公司的详情页改版,有一个需求设计同学觉得挺好,需要我们实现出来。
具体的需求大概就是,toolbar 上面的图标,需要根据滑动的距离去改变颜色~

当然是难不倒我们伟大的工程师(码农)的,所以讨论需求两小时,开发五分钟实现了设计的需求。

先看效果图~

请注意toolbar 上面的两个按钮

其实需求也就两点

1.灰色圆圈背景需要根据滑动距离变透明,其实改变它的alpha值就行了,这个容易。
2.就是白色图标需要渐变成黑色,这个其实也不难。

主要讲一下第二点的实现。

技术点

这个时候肯定需要去查阅下相关API文档了,发现原生确实就有 API 实现,相当的容易。
官网中发现有这个 API,位于android.support.v4.graphics.drawable.DrawableCompat下:

中文意思差不多就是可以给指定的drawable着色。

有了这个 API 就好办了,我们去监听下面的控件滑动距离,根据距离去设置给图片着色。

核心代码

 fun tintDrawable(drawable: Drawable, colors: ColorStateList): Drawable {
        val wrappedDrawable = DrawableCompat.wrap(drawable)
        DrawableCompat.setTintList(wrappedDrawable, colors)
        return wrappedDrawable
    }

在需要改变的地方调用这行代码即可:

 imageView.setImageDrawable(tintDrawable(imageView.drawable, ColorStateList.valueOf(Color.argb(alpha, red, green, blue))))

这样就实现了这个需求了,效果如开头图。

题外话

由于有了这个功能,所以我就可以用setTintList实现一张矢量图适配所有颜色~
可以减少不少资源

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容