ImageView ImageView隨手勢變化 動態縮放
阿新 • • 發佈:2019-02-18
今天做了一個功能需要在一個頁面上顯示一個流程圖,因為這個流程圖本身比較大,顯示在頁面上之後,我們並不能清楚的看清裡面的字,這時候就要我們可以通過縮放來檢視流程圖,想到就給原來的ImageView的新增縮放,之前就寫過類似的程式碼,不想再寫了就打算在網上找找,果然找到了一位網友的,他對ImageView繼承,重寫了onTouchEvent,實現了縮放,我就使用的網友的程式碼,可以使用到的時候發現,由於需要設定android:scaleType=”matrix”,這樣在流程圖剛開始就是放大的效果,很不好看,怎麼解決這個問題,我想在佈局檔案中,我們不能設定scaleType,應該在onTouchEvent 中去設定,這樣我們剛進去就不會有縮放的效果,測試發現,這個問題解決了,下面是我在網友程式碼的基礎上新增的程式碼:
case MotionEvent.ACTION_MOVE:
if(mode==DRAG){ //此實現圖片的拖動功能...
matrix.set(savedMatrix);
matrix.postTranslate(event.getX()-start.x, event.getY()-start.y);
}
else if(mode==ZOOM){// 此實現圖片的縮放功能...
float newDist=spacing(event);
if (newDist>10){
matrix.set(savedMatrix);
float scale=newDist/oldDist;
matrix.postScale(scale, scale, mid.x, mid.y);
}
}
break;
}
setScaleType(ImageView.ScaleType.MATRIX);
setImageMatrix(matrix);
return true;
在解決上面的問題中,查看了這二個部落格的內容,在這裡對二位表示感謝,下面給出連結:
可縮放的 Imageview
scaleType 的屬性的文章:scaleType