studio photoview library android performance gridview scroll zoom
aquí

photoview - Zoom lento y desplazamiento con GridView en Android



zoom animation android (1)

Estoy creando una vista personalizada derivada de GridView. Esto contiene un ImageView personalizado con funcionalidad de zoom y panoramización. La funcionalidad de desplazamiento y zoom es lenta. Si la vista principal es el mismo ImageView personalizado en lugar de un GridView, funciona perfectamente. Estoy intentando hacer esto porque necesito una imagen de fondo estática con un área interactiva en el centro. El zoom y el desplazamiento se implementan de forma similar a este artículo . Cargué un proyecto de prueba reproduciendo el problema aquí . El método OnCreate se implementa así:

@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); View myView1; boolean sluggish = false; if (sluggish) { myView1 = new MyGridView(this); } else { myView1 = new MyImageView(this); } setContentView(myView1); }

Si establece la variable inactiva en verdadero, verá que ImageView funciona mucho mejor para eso. ¿Tiene alguna idea de por qué usar GridView convierte el zoom y el desplazamiento inutilizable o cómo puede resolverse?

No estoy usando un ImageView "dinámico" en un ImageView "estático" porque no he encontrado cómo incrustar un ImageView en otro ImageView.

Gracias por adelantado.


La solución más sencilla y fácil que he encontrado hasta ahora es usar FrameLayout personalizado:

@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); View myView1 = new MyFrameLayout(this); setContentView(myView1); }

Que se implementa como se muestra a continuación y utiliza el control personalizado MyImageView en el primer ejemplo que publiqué.

public class MyFrameLayout extends FrameLayout { public MyFrameLayout(Context context) { super(context); MyImageView i1 = new MyImageView(context); this.addView(i1); MyImageView i2 = new MyImageView(context); LayoutParams lp = new LayoutParams(300, 300); lp.leftMargin = 100; lp.topMargin = 100; lp.gravity = 0; this.addView(i2, lp); } }

Una sugerencia de solución alternativa que obtuve en Twitter de Lawrence D''Olivero . Consiste en crear subclases en View, almacenarlos en caché y utilizar el evento OnDraw para componer la imagen desplazable sobre un fondo fijo como su demo aquí .