Of course, you will need to change this part:
else if (mode == ZOOM) {
float newDist = spacing(event);
Log.d(TAG, "newDist=" + newDist);
if (newDist > 10f) {
matrix.set(savedMatrix);
float scale = newDist / oldDist;
matrix.postScale(scale, scale, mid.x, mid.y);
}
}
to
else if (mode == ZOOM) {
float newDist = spacing(event);
Log.d(TAG, "newDist=" + newDist);
if (newDist > 10f) {
matrix.set(savedMatrix);
float scale = newDist / oldDist;
float newScale = scale*mCurrentScale;
if (newScale > 10) {
return false;
} else if (newScale < 0.1) {
return false;
}
mCurrentScale = newScale;
matrix.postScale(scale, scale, mid.x, mid.y);
}
}
and also add a variable mCurrentScaleto your activity to remember the current scale as follows:
public class Touch extends Activity implements OnTouchListener {
Matrix matrix = new Matrix();
Matrix savedMatrix = new Matrix();
float mCurrentScale = 1.0f;
...
source
share