@garyxt 我就问你最后结果是不是得到了图片的四点坐标 并且存放到RectF 中了 ?
就是通过这个方法来做的
就是通过这个方法来做的
2017-06-15
并不需要单独去实现onTouchListener ,也不需要设置setOntouchListener 。这是View本身的方法。直接重写onTouchEvent即可。setOnTouchListener是提供外部类去调用的。虽然这么写也没错,但是这块老师有点画蛇添足啦~~
2017-06-15
老师免费视频给你们讲课,你们还挑三拣四的,不喜欢听的就滚,听不懂的自己去多理解理解。自己水平不够,不要怪老师讲得不行。好比你上大学听高数,老师总不能从1+1讲起吧?
2017-06-14
if (dWidth > width && dHeight < height) {
……
}
if (dWidth < width && dHeight > height) {
……
}
if ((dWidth > width && dHeight > height) || (dWidth < width && dHeight < height)) {
……
}
亲测,可以直接
scale = Math.min(width * 1.0f / dWidth, height * 1.0f / dHeight);
……
}
if (dWidth < width && dHeight > height) {
……
}
if ((dWidth > width && dHeight > height) || (dWidth < width && dHeight < height)) {
……
}
亲测,可以直接
scale = Math.min(width * 1.0f / dWidth, height * 1.0f / dHeight);
2017-02-12
我觉得会用matrix、ScaleGestureDetector就行了,业务逻辑因人而异 大家都能写出自己的逻辑 效率好坏而已 况且老师的也不见得是最好的 这种程度的逻辑完全不用听老师的;ps:个人发现onScale中return true阻止事件传递这个蛮有意思,若false检测为一次传递 scaleFactor的值变动很大(相对于手指初始点击比例);return true的原因就是阻止传递,ScaleGestureDetector的onscale认为事件多次执行,每次比例均为本次检测时的currentSpan 我觉得如果只要老师代码 绝对会忽略了这些内容(这个确实该讲啊)
2017-02-01
关于rectF.set(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());的问题,我怀疑洋神是否真的清楚其中的本质。
d.getIntrinsicWidth()/height()的值只要图片不变,其结果永远不变。rectF.set()和mScaleMatrix.mapRect(rectF)会将图片现有的Matrix和IntrinsicWidth/height做一个映射计算,具体算法我说不清楚,数学不好。结果就是将图片以像素为单位的边界存放到RectF当中。这样才能做到图片的边界与空间宽高(以像素为单位)对应,从而正确计算。
d.getIntrinsicWidth()/height()的值只要图片不变,其结果永远不变。rectF.set()和mScaleMatrix.mapRect(rectF)会将图片现有的Matrix和IntrinsicWidth/height做一个映射计算,具体算法我说不清楚,数学不好。结果就是将图片以像素为单位的边界存放到RectF当中。这样才能做到图片的边界与空间宽高(以像素为单位)对应,从而正确计算。
2017-01-17
这种算法是有问题的。应该先把图片的宽高比和控件的宽高比作比较,决定图片缩放是适应宽还是适应高,算出缩放比,把另一条边根据缩放比进行缩放,剧中就可以了。这样穷举很有问题。
2016-12-24
对于赞数高的zttbill同学的说法,老师的缩放不是倍数,是比例,你说的缩小2倍,在代码里是乘上0.5,不是除以2,所以说“选择小的比例”意思是选择比例值小的,那么相乘后当然就是更加缩小的
2016-11-25