@garyxt 我就問你最后結果是不是得到了圖片的四點坐標 并且存放到RectF 中了 ?
就是通過這個方法來做的
就是通過這個方法來做的
2017-06-15
并不需要單獨去實現(xiàn)onTouchListener ,也不需要設置setOntouchListener 。這是View本身的方法。直接重寫onTouchEvent即可。setOnTouchListener是提供外部類去調用的。雖然這么寫也沒錯,但是這塊老師有點畫蛇添足啦~~
2017-06-15
老師免費視頻給你們講課,你們還挑三揀四的,不喜歡聽的就滾,聽不懂的自己去多理解理解。自己水平不夠,不要怪老師講得不行。好比你上大學聽高數(shù),老師總不能從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就行了,業(yè)務邏輯因人而異 大家都能寫出自己的邏輯 效率好壞而已 況且老師的也不見得是最好的 這種程度的邏輯完全不用聽老師的;ps:個人發(fā)現(xiàn)onScale中return true阻止事件傳遞這個蠻有意思,若false檢測為一次傳遞 scaleFactor的值變動很大(相對于手指初始點擊比例);return true的原因就是阻止傳遞,ScaleGestureDetector的onscale認為事件多次執(zhí)行,每次比例均為本次檢測時的currentSpan 我覺得如果只要老師代碼 絕對會忽略了這些內容(這個確實該講啊)
2017-02-01
關于rectF.set(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());的問題,我懷疑洋神是否真的清楚其中的本質。
d.getIntrinsicWidth()/height()的值只要圖片不變,其結果永遠不變。rectF.set()和mScaleMatrix.mapRect(rectF)會將圖片現(xiàn)有的Matrix和IntrinsicWidth/height做一個映射計算,具體算法我說不清楚,數(shù)學不好。結果就是將圖片以像素為單位的邊界存放到RectF當中。這樣才能做到圖片的邊界與空間寬高(以像素為單位)對應,從而正確計算。
d.getIntrinsicWidth()/height()的值只要圖片不變,其結果永遠不變。rectF.set()和mScaleMatrix.mapRect(rectF)會將圖片現(xiàn)有的Matrix和IntrinsicWidth/height做一個映射計算,具體算法我說不清楚,數(shù)學不好。結果就是將圖片以像素為單位的邊界存放到RectF當中。這樣才能做到圖片的邊界與空間寬高(以像素為單位)對應,從而正確計算。
2017-01-17
這種算法是有問題的。應該先把圖片的寬高比和控件的寬高比作比較,決定圖片縮放是適應寬還是適應高,算出縮放比,把另一條邊根據(jù)縮放比進行縮放,劇中就可以了。這樣窮舉很有問題。
2016-12-24
對于贊數(shù)高的zttbill同學的說法,老師的縮放不是倍數(shù),是比例,你說的縮小2倍,在代碼里是乘上0.5,不是除以2,所以說“選擇小的比例”意思是選擇比例值小的,那么相乘后當然就是更加縮小的
2016-11-25