tamaño studio programacion móviles manejo imagen galeria desarrollo curso cambiar camara aplicaciones android android-layout

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)