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

 

参考:

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 开始。

                                                                                                              0  1  0

                                                                                                              0  0  1

代码:

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值