ImageView属性ScaleType中Matrix的使用

ImageView属性ScaleType中Matrix的使用

背景

有一个需求是,两张图片重叠在一起,上层的图片要有一个从下到上消失的动画。

尝试解决方案

1.使用Canvas中xfermode,放置一张白色图片,修改图片的放置位置。让上层图片实现一部分消失。(太过复杂)

2.使用shader去做,也是Canvas中的内容。应用的是当shader比内容小的时候,就不渲染shader外的内容。(没尝试过,没把握)

3.跟同事讨论后,可以使用Matrix解决。也就是此篇记录。

Matix的效果

保证图片的大小,超出图片的部分不展示。图片放置的起点,是左上角。

使用

xml中设置

在xml中的ImageView中设置以下标签。

android:scaleType="matrix"

在使用以前的代码中,要设置Matrix。

mImageShade.imageMatrix = Matrix()

代码设置

比较推荐代码设置,毕竟你都要在代码里设置maxtix。所以何不一起设置了。

mImageShade.scaleType = ImageView.ScaleType.MATRIX
mImageShade.imageMatrix = Matrix()

拓展

当然Matix还可以配置,比如平移,旋转。当然,是以左上角为基准

matrix.setTranslate(100, 100);   //平移x和y各100单位
matrix.preRotate(30);            //顺时针旋转30度

思考

matrix在屏幕适配中,是否会有问题?如果是用的放在drawable中的图片应该没有问题。毕竟UI的切图都是按照屏幕比例。Android在加载xhdpixxhdpi的时候,会对图片进行缩放。如果ImageView的尺寸和图片尺寸是一致的话,应该没有问题。

如果是用Glide等网络下载的图片,我没有尝试过,目前未知。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值