2011-03-07 20 views

Respuesta

79

este artículo en el blog de desarrolladores de Android cubre este tema muy bien (desplazarse hacia abajo a la sección de GestureDetectors):

Making Sense of Multitouch

Si lo que desea es poner en práctica pellizcar para hacer zoom, hay Sólo unas pocas líneas de código que necesitará:

private ScaleGestureDetector mScaleDetector; 
private float mScaleFactor = 1.f; 

public MyCustomView(Context mContext){ 
    //... 
    //Your view code 
    //... 
    mScaleDetector = new ScaleGestureDetector(context, new ScaleListener()); 
} 

@Override 
public boolean onTouchEvent(MotionEvent ev) { 
    // Let the ScaleGestureDetector inspect all events. 
    mScaleDetector.onTouchEvent(ev); 
    return true; 
} 

@Override 
public void onDraw(Canvas canvas) { 
    super.onDraw(canvas); 

    canvas.save(); 
    canvas.scale(mScaleFactor, mScaleFactor); 
    //... 
    //Your onDraw() code 
    //... 
    canvas.restore(); 
} 

private class ScaleListener extends ScaleGestureDetector.SimpleOnScaleGestureListener { 
    @Override 
    public boolean onScale(ScaleGestureDetector detector) { 
     mScaleFactor *= detector.getScaleFactor(); 

     // Don't let the object get too small or too large. 
     mScaleFactor = Math.max(0.1f, Math.min(mScaleFactor, 5.0f)); 

     invalidate(); 
     return true; 
    } 
} 

El resto del artículo trata con el manejo de otros gestos, pero en lugar de utilizar su aplicación, puede utilizar GestureDetector al igual que ScaleGestureDetector se utiliza en el código anterior.

+4

he terminado con esto, pero ¿cómo puedo arrastrar o desplazar la vista ampliada – sillyMistaker

+0

@sillyMistaker sobre la sartén está muy bien explicado en el enlace del mensaje. Es demasiado contenido para un comentario, pero sigue una lógica bastante fácil. – TechNyquist

7

Ponga su vista en ZoomView.

Vista personalizada disponible aquí https://github.com/Polidea/android-zoom-view ¡es fácil, gratis y muy divertido!

+4

¿Alguna documentación para acompañar eso? – Peter

+0

buen ejemplo, pero causa muchas llamadas invalidadas. – DearDhruv

+1

Desafortunadamente, el proyecto no parece haber estado activo durante los últimos 6 meses. Envié una solicitud de extracción para corregir un error obvio hace 15 días, pero no recibí ninguna respuesta. –

-2

uso esto:

Implementación de ImageView para Android que admite zoom, por diversos gestos táctiles.

https://github.com/chrisbanes/PhotoView

+0

Photoview funciona bien solo en ImageView, pero no obtuvo la Vista, que se amplía en otra clase. ¿Cómo trabajar con CustomView por favor? –

Cuestiones relacionadas