Ich versuche, dem Benutzer zu erlauben, das Bild zu berühren, und dann wird im Grunde eine kreisförmige Lupe zeigen, die es dem Benutzer erlauben wird, einen bestimmten Bereich auf dem Bild besser auszuwählen. Wenn der Benutzer die Berührung freigibt, verschwindet der vergrößerte Teil. Dies wird in mehreren Fotobearbeitungs-Apps verwendet und ich versuche, meine eigene Version davon zu implementieren. Der Code, den ich unten habe, vergrößert einen kreisförmigen Teil der Bildansicht, löscht oder löscht den Zoom jedoch nicht, sobald ich meinen Finger loslasse. Ich setze derzeit eine Bitmap auf eine Leinwand mit canvas = new Canvas(bitMap);
und dann die Bildansicht mit takenPhoto.setImageBitmap(bitMap);
Ich bin mir nicht sicher, ob ich den richtigen Weg gehe. Der OnTouch Code ist unten:Android - Wie kreisförmig vergrößern/verkleinern Sie einen Teil des Bildes?
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;
}
});
Ich weiß nicht, ob ich es richtig verstehe, aber fragen Sie, wie ein Zoom-Effekt löschen auf einem Bild? Warum nicht speichern Sie das Originalbild in einem separaten Bitmap. Wenn der Benutzer den Zoom verwendet und es Zeit ist, den Lupeneffekt loszuwerden, verwenden Sie das Original-Bitmap und zeichnen Sie es erneut auf die Leinwand, um das Bild mit dem Zoom zu löschen. –
nein Ich bekomme den Vergrößerungsring nicht über die Bildansicht. Würdest du bitte etwas mehr teilen oder wo Code funktioniert? –
Ich habe auch das Bedürfnis, Bild in einem transparenten Overlay-Rahmen zu zoomen, der in der Mitte der Galerie ist, also welche immer das Bild durchqueren, die gezoomt werden, bitte vorschlagen – Ravi