studio - manual de programacion android pdf
Escala una imagen para completar toda la imagen en Android (2)
Me gustaría escalar una imagen para tomar todo el tamaño de un ImageView. Esto es sutilmente diferente de usar scaleType=fit_center
porque fit_center dejará bandas alrededor de la imagen si la relación de aspecto de la imagen no coincide exactamente con la relación de aspecto de ImageView. En cambio, me gustaría que la imagen se centre y amplíe para completar completamente la vista circundante, con cualquier exceso cortado.
Puedo lograr esto al calcular mi propia matriz de imagen personalizada durante onCreate ():
final Display display = getWindowManager().getDefaultDisplay();
final float screenWidth = display.getWidth();
final float screenHeight = display.getHeight();
final float imageWidth = splashView.getDrawable().getIntrinsicWidth();
final float imageHeight = splashView.getDrawable().getIntrinsicHeight();
final Matrix splashMatrix = new Matrix();
final float scale = Math.max(screenHeight/imageHeight,screenWidth/imageWidth);
splashMatrix.postScale( scale, scale );
splashView.setImageMatrix(splashMatrix);
Esto funciona bien, pero parece que debe haber una distancia más fácil. ¿Alguien sabe de una manera de escalar una imagen en un ImageView mientras preserva la relación de aspecto de la imagen y llena por completo el ImageView?
(Nota: en mi caso mi ImageView ocupa la pantalla completa, entonces uso getWindowManager().getDisplay()
para encontrar el tamaño de imagen deseado. No puede usar splashView.getWidth()
/ getHeight()
porque la vista no ha no se ha presentado aún y no tiene un tamaño)
Pruebe el atributo scaleType para su ImageView. http://developer.android.com/reference/android/widget/ImageView.html#attr_android:scaleType
Puedes usar android:scaleType="centerCrop"
. Mantiene la relación de aspecto y escala la imagen tal como lo desea.
Para obtener más información, vaya a través del enlace a continuación
http://developer.android.com/reference/android/widget/ImageView.html#attr_android:scaleType