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