Cómo mantener la relación de aspecto de la imagen si imageview se extiende primero para rellenar padre

Quiero estirar la imagen para rellenar el ancho y ajustar la altura de acuerdo al ancho y mantener la relación de aspecto. Quiero que debe cubrir todo el ancho (fillparent) y la altura de la imagen debe ajustarse como de manera que la relación de aspecto se mantiene.

Intenté fit_xy pero no trabajando en mi caso. por favor, ayúdame

Hay dos posibles soluciones incluso si se establece el tipo de escala fit_xy

1) De forma predeterminada, Android escalará su imagen para ajustarse al ImageView, manteniendo la relación de aspecto. Sin embargo, asegúrese de que está configurando la imagen en ImageView con android:src="..." lugar de android:background="..." . src= hace que la escala de la imagen mantenga la relación de aspecto, pero background= hace que la escala y distorsionar la imagen para que se ajuste exactamente al tamaño de la ImageView. (Sin embargo, puede utilizar un fondo y una fuente al mismo tiempo, lo cual puede resultar útil para cosas como mostrar un fotograma alrededor de la imagen principal, utilizando sólo un ImageView).

2) También debería ver android:adjustViewBounds para hacer que ImageView android:adjustViewBounds su tamaño para ajustarse a la imagen redimensionada. Por ejemplo, si tiene una imagen rectangular en lo que normalmente sería un cuadrado ImageView, adjustViewBounds = true hará que redimensione el ImageView para ser rectangular también. Esto afecta a cómo se establecen otras vistas en torno a ImageView.

Puede cambiar la forma en que las imágenes de escalas predeterminadas utilizan el parámetro android:scaleType . Por cierto, la manera más fácil de descubrir cómo funciona esto simplemente habría sido experimentar un poco a ti mismo! Sólo recuerde mirar los diseños en el emulador en sí (o un teléfono real) como la vista previa en Eclipse suele ser errónea.

No estoy seguro de cuando la característica que utilizo se agregó al SDK de Android, pero hay una solución sencilla que hace exactamente lo que el OP está buscando:

Como era de esperar, configure el diseño: ancho y diseño: height to fill_parent.

Como otro respondedor mencionado correctamente, use src para encontrar su imagen, no de fondo.

Sin embargo, en lugar de intentar scaleType de fit_xy (que encuentra el lado más estrecho para encajar en la vista en lugar del lado más largo), use scaleType de centerCrop.

CentreCrop se centrará y rellenará la ventana gráfica mientras mantiene la relación de aspecto.

¡Espero que esto ayude! Lo usé para la superposición de carga webView de una aplicación comercial que desarrollé para mi actual empleador.

Copiar / pegar solución: en el archivo XML de su actividad, añada las siguientes líneas:

 <ImageView android:id="@+id/logo" android:layout_width="wrap_content" android:layout_height="fill_parent" android:scaleType="centerCrop" android:src="@drawable/your_image_name" /> 

Hay dos maneras de hacer esto: Primero encuentre la altura y el ancho de la pantalla y llame a este método

 private void scaleImage(int displayWidth) { // Get the ImageView and its bitmap width=displayWidth; Drawable drawing = holder.imagepost.getDrawable(); { Bitmap bitmap = ((BitmapDrawable) drawing).getBitmap(); int bounding = dpToPx(width); // Determine how much to scale: the dimension requiring less // scaling is // closer to the its side. This way the image always stays // inside your // bounding box AND either x/y axis touches it. float xScale = ((float) bounding) / width; float yScale = ((float) bounding) / height; float scale = (xScale <= yScale) ? xScale : yScale; // Create a matrix for the scaling and add the scaling data Matrix matrix = new Matrix(); matrix.postScale(scale, scale); // Create a new bitmap and convert it to a format understood by // the ImageView Bitmap scaledBitmap = Bitmap.createBitmap(bitmap, 0, 0, width, height, matrix, true); width = scaledBitmap.getWidth(); // re-use height = scaledBitmap.getHeight(); // re-use BitmapDrawable result = new BitmapDrawable(scaledBitmap); // Apply the scaled bitmap holder.imagepost.setImageDrawable(result); // Now change ImageView's dimensions to match the scaled image LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) holder.imagepost .getLayoutParams(); params.width = width; params.height = height; holder.imagepost.setLayoutParams(params); } } private int dpToPx(int dp) { float density = context.getResources().getDisplayMetrics().density; return Math.round((float) dp * density); } 

O la mejor manera que conozco es usar Android Query

Aquí está el enlace http://code.google.com/p/android-query/ y se puede descargar desde allí mismo. Identifica el código para mantener la relación de aspecto

 aq.id(R.id.imageView) .image(imageString, true, true, displaywidth, 0, null, AQuery.FADE_IN, AQuery.RATIO_PRESERVE); 

Debajo de la solución está trabajando muy bien para mí.

Utilice la opción AQuery Libray "AQuery.RATIO_PRESERVE" para preservar la relación de aspecto:

 aq.id(R.id.imgView).progress(R.id.imgPb).image(url, true, true,150, 0,null,AQuery.FADE_IN,AQuery.RATIO_PRESERVE); 

Utilice los ajustes siguientes para ImageView:

 <ImageView android:layout_width="match_parent" android:layout_height="match_parent" android:scaleType="fitXY"/> 

Utilice la configuración siguiente para las columnas de GridView automáticas:

 <GridView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/gridView" android:layout_width="match_parent" android:layout_height="match_parent" android:numColumns="auto_fit" android:columnWidth="150dp"/> 
  • Diapositiva personalizada para desbloquear
  • Pinch Android y Zoom de la imagen en la actividad
  • Transición animada entre dos vistas de imagen
  • Android - Lienzo drawLine dentro de ImageView
  • Mostrar imagenVer superior de RelativeLayout
  • Android Zoomable / desplazable ImageView con superposiciones
  • Android - ¿Cómo mostrar imágenes de los recursos dibujable?
  • Haz que la imagen aparezca en la mitad de la pantalla
  • Crear animación cambiando la imagen en ImageView con Timer (o Handler)
  • Zoom y arrastrar una imagen en android
  • Cómo obtener la imagen del servicio web a la aplicación Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.