2010-06-26 11 views
6

Intentaré ser lo más claro posible.Galería e ImageView a pantalla completa, problema al juntarlos

aquí lo que estoy tratando de hacer

un visor de imágenes, donde la imagen de visualización sería tan grande como sea posible en la pantalla del dispositivo. Para esta búsqueda y para una mejor experiencia de usuario, pensé en una galería. ¡Hasta allí todo está bien!

El problema

El problema es que en el getView función de mi adaptador, que utiliza sólo los Gallery.LayoutParams de la primera imagen que tengo en mi galería. Lo que significa que si la primera imagen es un paisaje y la segunda un retrato, la segunda se mostrará como paisaje, con la misma dimensión que la primera. Restablezco Gallery.LayoutParams pero no importa, todavía tiene los LayoutParams del primer ImageView.

El código

public View getView(int position, View convertView, ViewGroup parent) { 

     ImageView im = new ImageView(mContext); 

     Bitmap bm = BitmapFactory.decodeByteArray(gallery.get(position).mContent, 0, gallery.get(position).mContent.length); 
     im.setImageBitmap(bm); 

     int width = 0; 
     int height = 0; 

     if (bm.getHeight() < bm.getWidth()) { 
      width = getWindowManager().getDefaultDisplay().getWidth(); 
      height = bm.getHeight() * width/bm.getWidth(); 
     } 
     else { 
      height = getWindowManager().getDefaultDisplay().getHeight(); 
      width = bm.getWidth() * height/ bm.getHeight(); 
       } 

     Gallery.LayoutParams lp = new Gallery.LayoutParams(width, height); 
     im.setLayoutParams(lp); 

     return im; 
} 

Si alguno de ustedes ver por qué sería realmente quiera saber la respuesta,

Respuesta

4

Galería fuerzas que todos los niños tienen el mismo tamaño. Además, está creando una nueva Vista cada vez que se llama a getView() y es una idea terrible. Debe usar convertView cuando no sea nulo. Actualmente hay una función que falta en la Galería, por lo que convertView siempre es nulo, pero para beneficiarse de ella en una futura versión de Android, use convertView de todos modos. También es una buena práctica que debe aplicar en cada adaptador que escriba.

+0

Vi tu video en línea sobre convertView, lo aplicaré. Entonces, no hay solución para mi problema al usar la Galería si entendí tu mensaje, ¿estoy en lo cierto? – Spredzy

+0

Si desea obtener más rendimiento, también puede usar Holder Design Pattern y puede establecer etiquetas y etiquetas en lugar de buscarlas en la jerarquía de vistas. –

+0

Como Romain dijo que faltaba el mecanismo de caché/reciclaje en la Galería, por lo que siempre obtendrás una conversión nula en tu adaptador. Como alternativa, puede usar el widget DOWUX GalleryFlow, que tiene una implementación en funcionamiento del mecanismo de almacenamiento en caché/reciclaje. Puede utilizar GalleryFlow para reemplazar la galería de valores. –