Android -- View setScale, setTranslation 对View矩阵的处理

本文深入探讨了Android中View的矩阵变换,包括setPivotX设置旋转或缩放基点、setScaleX设置X轴缩放比例以及setTranslationX实现平移的效果。重点解析了setTranslationX的post模式和平移矩阵计算,以及setScaleX的pre模式和缩放矩阵变换。文章指出,每次调用这些方法都会重新计算矩阵,而非基于前一次变换。并提供了一个示例,解释了在setScaleX(0.9)后设置setTranslation(100)如何影响矩阵变换。

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

 

参考:

1、Android Matrix理论与应用详解

 

2、2D平面中关于矩阵(Matrix)跟图形变换的讲解

 

3、Android中关于矩阵(Matrix)前乘后乘的一些认识

 

4、Android Matrix

 

View.setPivotX:设置旋转或缩放的基点的X位置,默认是对象的中点(官方API说明:https://developer.android.com/reference/android/view/View.html#setPivotX(float))。

View.setScaleX:设置缩放比例。一般情况下,View的缩放会产生平移数据。

相对点P(a,b)的比例[sx,sy]变化矩阵[1]


这里的点P(a, b)就是前文说的基点。

注意:

setTranslationX(),是post模式,即setTranslationX()产生的变换矩阵乘以当前矩阵。

setScaleX(),使pre模式,即当前矩阵乘以setScaleX()产生的变换矩阵。

 

例子:

 

 

无论setScalex()在setTanslation()之前或之后调用,都是setTanslation()产生的变换矩阵乘以setScaleX()产生的变换矩阵。

举例:setScalex(0.9),setTanslation(100),矩阵变换为:

1   0   100     乘以    0.9    0   (1-0.9)*320  得到   0.9   0   132

0   1    0                  0      1       0                        0    1     0

0   0    1                  0      0       1                        0    0     1

第一个矩阵由setTanslation(100)得到,第二个矩阵由setScalex(0.9)得到,而(1-0.9)*320中的320是Image中点X值,实例图片宽度为640。

再次调用这两个方法后,都是重新进行计算,而不是在前一次的基础上计算。都是从矩阵 1  0  0 开始。

                           &nbs

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值