public boolean onTouchEvent(MotionEvent event){
int action=event.getAction() & MotionEvent.ACTION_MASK;
switch(action){
case MotionEvent.ACTION_DOWN:
lastX=event.getX();
lastY=event.getY();
break;
case MotionEvent.ACTION_MOVE:
posX+=event.getX()-lastX;
posY+=event.getY()-lastY;
invalidate();
lastX=event.getX();
lastY=event.getY();
break;
case MotionEvent.ACTION_POINTER_DOWN:
System.out.println("SECONDO PUNTATORE GIU'");
break;
case MotionEvent.ACTION_POINTER_UP:
System.out.println("SECONDO PUNTATORE SU");
}
return true;
}
Zooming.
Questa è la costruzione di un listener:
private class ScaleListener extends ScaleGestureDetector.SimpleOnScaleGestureListener{
@Override
public boolean onScale(ScaleGestureDetector detector){
mScaleFactor=detector.getScaleFactor();
invalidate();
return true;
}
}
E' da vedere come viene istanziata questa classe.Viene dichiarata una variabile di tipo ScaleGestureDetector.
private ScaleGestureDetector mScaleDetector;Ah, ecco: nel contesto del costruttore viene messa un'istanza anonima della classe ScaleListener.
mScaleDetector = new ScaleGestureDetector(context, new ScaleListener());Ossia si crea un nuovo ScaleGestureDetector con quel determinato listener.
Questo ScaleGestureDetector viene posto nell'evento onTouchEvent dove viene evocato il suo metodo onTouchEvent.
Ricominciamo...
No, ho dimenticato questi importanti dettagli:
private class ScaleListener extends ScaleGestureDetector.SimpleOnScaleGestureListener{
@Override
public boolean onScale(ScaleGestureDetector detector){
mScaleFactor*=detector.getScaleFactor();
invalidate();
return true;
}
}
Alla fine sono riuscito a zoomarla.Mandala!
Cancello e riscrivo.
Ho fatto tre mandala.
Dovrei averla memorizzata abbastanza, ma sono necessari altri mandala successivi.
Nessun commento:
Posta un commento