Dipende dalla versione di Android che desideri utilizzare come target.
- 2.2 o più recente - utilizzare il dispositivo ScaleGestureDetector incorporato. Il javadoc è molto utile, ma vedi l'esempio qui sotto.
- 2.0-2.2 - ScaleGestureDetector non è integrato, quindi copy the version from Android e compilarlo nell'applicazione.
- pre-2.0 - Mutitouch non era supportato prima 2.0, quindi è necessario copy ScaleGestureDetector.java from Android e fare un po 'di lavoro di non utilizzare le API multitouch su dispositivi non supportati:
Per evitare di utilizzare le API multitouch su pre- Dispositivi 2.0, è necessario creare un'interfaccia per ScaleGestureDetector (Eclipse può farlo tramite il menu Refactor) e un'implementazione fittizia che i dispositivi 1.x useranno. Chiameremo la nostra interfaccia ScaleGestureDetectorInterface
e la nostra implementazione fittizia FakeScaleGestureDetector
.
Ecco un esempio di supporto pre-2.0 dispositivi:
// If you don't care about pre-2.0 devices, just make this a
// ScaleGestureDetector and skip the API check in the constructor.
private final ScaleGestureDetectorInterface mScaleDetector;
public MyView {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.ECLAIR) {
// Use the fake version which won't call any multitouch APIs
mScaleDetector = new FakeScaleGestureDetector();
} else {
// We are using SDK 2.0+, use the real implementation.
mScaleDetector = new ScaleGestureDetector(context,
new MyScaleListener());
}
}
@Override
public boolean onTouchEvent(MotionEvent event) {
// On pre-2.0, the implementation does nothing.
return mScaleDetector.onTouchEvent(event);
}
private class MyScaleListener extends
ScaleGestureDetector.SimpleOnScaleGestureListener {
@Override
public boolean onScale(ScaleGestureInterface detector) {
float scaleFactor = detector.getScaleFactor();
// If you were using a matrix to zoom an ImageView, you would do
// something like this:
mMatrix.postScale(scaleFactor, scaleFactor, detector.getFocusX(),
detector.getFocusY());
return true;
}
}
Sto iniziando da solo su Android Dev stuff, se non ce n'è uno, questa sarebbe una grande opportunità per avviarne uno e renderlo disponibile agli altri. – onaclov2000
Sembra che tu stia confondendo il termine "multitouch". Quello che stai chiedendo in particolare è la funzionalità "pizzica zoom". Quale è una delle cose che possono essere compiute usando il multitouch. La funzionalità multitouch è semplicemente la capacità di rilevare due o più eventi touch sullo schermo contemporaneamente. –