Android Matrix 以中心缩放

Matrix涉及到缩放的api主要有:setScale , postScale,preScale及这些方法的重写方法;

Matrix并不会记录画布或view的大小尺寸,故Matrix无法直接提供执行中心缩放的功能,需要我们根据实际的尺寸进行计算和调整缩放中心

回归正题,以下将简单介绍两种按中心点进行缩放的方法:1、先缩放,再计算平移位置达到中心点;

//scaleX,scaleY分别是X轴和Y轴的缩放比例
mMatrix.setScale(scaleX,scaleY); 
//用于接收目标坐标
float[] desPoint = {0f, 0f}; 
//构建控件或画布大小的坐标 float[] srcPoint = {getWidth() * 1f, getHeight() * 1f}; 
//映射控件或画布大小缩放后的大小
mMatrix.mapPoints(desPoint,srcPoint);
//计算需要平移的X,Y的坐标,从而达到中心点缩放的目的
float startX =( getWidth() - desPoint[0])/2; 
float startY =( getHeight() - desPoint[1])/2;
mMatrix.postTranslate(startX, startY);

2、先计算中心点坐标,再以中心点进行缩放;

//用于接收目标坐标
float[] desPoint = {0f, 0f};
//构建控件或画布大小的坐标 
float[] srcPoint = {getWidth() * 1f, getHeight() * 1f};
//映射控件或画布大小缩放后的大小
mMatrix.mapPoints(desPoint,srcPoint);
//该api后面两个参数指定了以哪个点进行缩放的
mMatrix.postScale(scaleX,scaleY,desPoint[0]/2f,desPoint[1]/2f);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值