Android自定义View(三) Matrix的原理解析

本文深入探讨Android中的Matrix类,解释其在自定义View中如何进行坐标映射和变换,包括平移、缩放、旋转和错切。通过矩阵运算,详细阐述了Matrix的内部工作原理,并对比了前乘和后乘的区别,帮助理解在实际开发中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Matrix的中文是矩阵的意思,在Android中它起着坐标映射、变换的功能。意思就是说我们在自定义view中,有时需要对图表进行缩放、旋转、转移、错切等操作,就需要对图表的坐标进行一定的转换,此时就是Matrix在后台起作用的。Matrix是一个3x3的矩阵,大概长成下面那样子,如图:

举个例子,为什么要用Matrix进行坐标转换,比如我想对点A围绕原点旋转30°,此时通过Matrix就可以很容易的实现这一需求,操作如下

Matrix matrix=new Matrix();

matrix.postRotate(30);

其实这个旋转操作本质上是点A在旋转前后的坐标值发生了改变而已,但是如果旋转后的坐标值要我们自己去计算的话就非常麻烦,而直接调用matrix的postRotate方法,matrix就已经帮我们算好了。至于它里面是怎么计算的,下面会讲到,这里只是想说明Matrix的作用,就是对坐标通过映射转换成我们需要的坐标值

Matrix的基本变换有四种:translate(平移)、scale(缩放)、rotate(旋转)、skew(错切)。下面来看看这个几种变换分别对应Matrix矩阵的哪些位置

由上面两个图表,可以清楚地看到Matrix是一个3×3矩阵,每个参数代表的一定的意义,我们着重关注旋转、位移、缩放、错切这几个参数即可。下面就逐一分析一下这几种矩阵变换内部是如何实现的

1.缩放(scale)

比如对一个图表在x和y轴分别缩放k1和k2倍

用Matrix实现如下

        //首先构建一个单位矩阵
        Matrix matrix=new Matrix();
        matrix.setScale(k1,k2);

但从Matrix的内部原理来分析,它的计算公式如下

x=x0 * k1、y=y0 * k2

其中(x0、y0)代表变换前的坐标,(x、y)代表变换后的坐标

等价于矩阵的如下表示:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值