为了账号安全,请及时绑定邮箱和手机立即绑定

if(matrixRect.width()>=width){}else{ // 这里不就是小于吗}

if(matrixRect.width()>=width){}else{ // 这里不就是小于吗}

正在回答

2 回答

我是这样理解的:

首先判断图片的宽度大于等于屏幕宽度要做的操作---即不让屏幕出现白边,因为如果小于的话屏幕本身就会有空白出现。这里的rect.width就是通过mScaleMatrix放大或缩小后的图片宽度。

rect有四个值:left、right、top、bottom。

结合老师画的那个图来看,left值就是rect离屏幕左边的距离,这个值不能大于0,如果大于0则说明图片在屏幕内且小于了屏幕宽度,在偏移过程中屏幕左边会出现白边,也不能是负值,否则图片就超出了屏幕范围,右边会出现白边;而right值是不能小于屏幕宽度,否则也会出现白边,应该让right值等于屏幕的宽度,也就是我们屏幕的宽度减去rect.right的值。总的说来我们在这个if中要做的就是在图片偏移的过程中不能让left大于0,right小于屏幕宽度。下面的垂直方向控制同理。

也不知道这样理解对不对……

0 回复 有任何疑惑可以回复我~

我觉得他这里输偶读Rect.width,除了缩放要显示图片区域的宽度,还包括未调整前的白边。

Rect.width本来应该等于width的,但是因为有白边,所以Rect.width > width了


0 回复 有任何疑惑可以回复我~
#1

weibo_精神缺失z_0

请问一下 这里 if(rectF.width() >= width){} 这里是什么意思呢?为什么这个矩阵的宽大于等于屏幕的宽度才能出现白边,能详细解释一下吗
2015-09-06 回复 有任何疑惑可以回复我~
#2

久居_深海 回复 weibo_精神缺失z_0

left、right、top、bottom。结合老师画的那个图来看,left值就是rect离屏幕左边的距离,这个值不能大于0,如果大于0则说明图片在屏幕内且小于了屏幕宽度,在偏移过程中屏幕左边会出现白边,也不能是负值,否则图片就超出了屏幕范围,右边会出现白边;而right值是不能小于屏幕宽度,否则也会出现白边,应该让right值等于屏幕的宽度,也就是我们屏幕的宽度减去rect.right的值。总的说来我们在这个if中要做的就是在图片偏移的过程中不能让left大于0,right小于屏幕宽度。下面的垂直方向控制同理。 也不知道这样理解对不对……
2015-10-12 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
打造个性的图片预览与多点触控
  • 参与学习       23112    人
  • 解答问题       76    个

实现图片自由缩放与多点触控效果,对Matrix以及手势检测API深入学习

进入课程

if(matrixRect.width()>=width){}else{ // 这里不就是小于吗}

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号