Hacer el diseño de Android y los diseños anidados dentro de zoomable

He estado trabajando en una aplicación con diseños complejos. Recientemente me di cuenta que tengo que hacer piezas o todos mis diseños zoomable.

Uno de mis archivos xml principales tiene un diseño lineal con múltiples diseños anidados dentro de él para posicionar las vistas correctamente. ¿Hay una manera fácil de hacer este diseño lineal y todo dentro de zoomable? ¿O sería más fácil hacer zoomable todo el archivo de diseño? ¿Cuáles son mis opciones?

En primer lugar extender esa clase con esa vista específica

public class MyImageView extends ImageView{ 

Anule el siguiente método.

  @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.save(); canvas.scale(mScaleFactor, mScaleFactor, midPoint.x, midPoint.y); if(appInitialized) { hsSide.draw(canvas); scaleA.draw(canvas); scaleB.draw(canvas); } canvas.restore(); } 

Cree un detector de gestos que detecte el tamaño del objeto ampliado y puede limitarlo para evitar solapamientos.

  private class ScaleListener extends ScaleGestureDetector.SimpleOnScaleGestureListener { @Override public boolean onScale(ScaleGestureDetector detector) { mScaleFactor *= detector.getScaleFactor(); pivotX = detector.getFocusX(); pivotY = detector.getFocusY(); // Don't let the object get too small or too large. mScaleFactor = Math.max(0.8f, Math.min(mScaleFactor, 2.0f)); invalidate(); return true; } } 

Al final inicializar el objeto

  ScaleGestureDetector mScaleDetector; mScaleDetector = new ScaleGestureDetector(context, new ScaleListener()); 

Podría echar un vistazo a las transformaciones estáticas. Cualquier grupo de ViewGroup o subclase puede personalizarse para aplicar una transformación a sus vistas secundarias. Puede activar esta setStaticTransformationsEnabled(true) llamando a setStaticTransformationsEnabled(true) y, a continuación, reemplazando la devolución de llamada getChildStaticTransformation() ) en su grupo de ViewGroup personalizado. Puedes aplicar cualquier transformación que quieras, incluyendo una escala para crear tu efecto de zoom. Esta devolución de llamada se llamará cada vez que la vista tiene que volver a dibujarse o se invalida.

Además, tenga cuidado al utilizar esto junto con la aceleración de hardware. Dependiendo de la frecuencia con la que usted necesita para actualizar las transformaciones que usted puede encontrar hardware no funciona a redibujar como se espera. Si es así, deberá habilitar capas de software para esta jerarquía de vistas.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.