Pour Android 2.2+ (api level8), vous pouvez utiliser ScaleGestureDetector.
vous avez besoin d'un membre :
private ScaleGestureDetector mScaleDetector;
dans votre constructeur (ou onCreate()) vous ajoutez :
mScaleDetector = new ScaleGestureDetector(context, new OnScaleGestureListener() {
@Override
public void onScaleEnd(ScaleGestureDetector detector) {
}
@Override
public boolean onScaleBegin(ScaleGestureDetector detector) {
return true;
}
@Override
public boolean onScale(ScaleGestureDetector detector) {
Log.d(LOG_KEY, "zoom ongoing, scale: " + detector.getScaleFactor());
return false;
}
});
Vous remplacez onTouchEvent :
@Override
public boolean onTouchEvent(MotionEvent event) {
mScaleDetector.onTouchEvent(event);
return true;
}
Si vous dessinez votre vue à la main, dans le onScale(), vous stockez probablement le facteur d'échelle dans un membre, puis vous appelez invalidate() et utilisez le facteur d'échelle lors du dessin dans votre onDraw(). Sinon, vous pouvez modifier directement la taille des polices ou d'autres choses de ce genre dans la fonction onScale().