我想讓用戶觸摸圖像,然後基本上一個圓形放大鏡會顯示,這將允許用戶更好地選擇圖像上的某個區域。當用戶釋放觸摸時,放大的部分將消失。這用於幾個照片編輯應用程序,我試圖實現我自己的版本。下面的代碼確實放大了圖像視圖的圓形部分,但是一旦鬆開手指就不會刪除或清除縮放。我目前使用canvas = new Canvas(bitMap);
將位圖設置爲畫布,然後使用takenPhoto.setImageBitmap(bitMap);
設置圖像視圖。我不確定我是否以正確的方式進行操作。 onTouch代碼如下:Android - 如何循環縮放/放大圖像的一部分?
zoomPos = new PointF(0,0);
takenPhoto.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
int action = event.getAction();
switch (action) {
case MotionEvent.ACTION_DOWN:
zoomPos.x = event.getX();
zoomPos.y = event.getY();
matrix.reset();
matrix.postScale(2f, 2f, zoomPos.x, zoomPos.y);
shader.setLocalMatrix(matrix);
canvas.drawCircle(zoomPos.x, zoomPos.y, 20, shaderPaint);
takenPhoto.invalidate();
break;
case MotionEvent.ACTION_MOVE:
zoomPos.x = event.getX();
zoomPos.y = event.getY();
matrix.reset();
matrix.postScale(2f, 2f, zoomPos.x, zoomPos.y);
canvas.drawCircle(zoomPos.x, zoomPos.y, 20, shaderPaint);
takenPhoto.invalidate();
break;
case MotionEvent.ACTION_UP:
//clear zoom here?
break;
case MotionEvent.ACTION_CANCEL:
break;
default:
break;
}
return true;
}
});
我不知道我的理解對不對,但你問如何清除變焦效果在圖像上?爲什麼不將原始圖像保存在單獨的位圖中。當用戶使用縮放並且是時候擺脫放大鏡效果時,請使用原始位圖並在畫布上重新繪製它,從而使用縮放來擦除圖像。 –
不,我沒有得到imageview的放大圓。你會在代碼工作的地方分享更多或上課的內容嗎? –
我也有需要放大圖像在畫廊中心的透明覆蓋幀,以便哪些圖像經過,得到放大,請建議 – Ravi