2011-12-16 10 views
8

Tengo un ViewPager hecha por ImageViews implementado como esto:ViewPager Android con ImageView con zoom

@Override 
    public Object instantiateItem(View collection, int position) { 
     ImageView iv = new ImageView(ctx); 
     if (pageList.size() > position) 
      iv.setImageBitmap(pageList.get(position)); 
     else 
      iv.setImageResource(R.drawable.loading); 

     iv.setOnTouchListener(this); 
     ((ViewPager) collection).addView(iv, 0); 
     System.out.println("POS: " + position); 
     return iv; 
    } 

Cualquier posibilidad de que pueda tener ese ImageView con zoom con un doble toque (y deslizar la imagen) o pellizcar con zoom?

Respuesta

6

Es posible, así es como lo hice.

Mi elemento de diseño de nivel superior es FrameLayout, que permite apilar varias vistas una encima de la otra. El FrameLayout tiene dos hijos: el ViewPager y un ImageView que usaré para mostrar la imagen ampliada.

El ImageView normalmente está oculto. Escucho eventos táctiles en las imágenes dentro del ViewPager y en base a eso, muestro y oculto y saco el ImageView. Funciona bastante bien. Puedo dar más detalles si es necesario.

+2

Más detalles serían de hecho útiles. –

+2

Por favor, podría compartir más detalles .. – arjoan

+0

Más detalles serían útiles – Piotr

2

Utilicé la clase TouchImageView de Mike Ortiz. No es perfecto ¡Pero es genial porque puedes soltarlo fácilmente! La animación de zoom de doble toque puede ser divertida. El zoom de pellizco se puede activar mediante doble toque, lo cual es extraño.

Funciona muy bien si se lo coloca directamente en un ViewPager (a través de una clase de adaptador). Cuando se acerca el zoom, puede moverse libremente hacia la izquierda y hacia la derecha sin activar un cambio de página a menos que esté justo en el borde, ¡lo que es realmente genial!

https://github.com/MikeOrtiz/TouchImageView/blob/master/src/com/ortiz/touch/TouchImageView.java

+0

¡La clase TouchImageView es realmente un salvavidas! –