¿Cómo ajustar una imagen de tamaño aleatorio a una ImageView
?
Cuando:
- Inicialmente las
ImageView
dimensiones son 250dp * 250dp - La dimensión más grande de la imagen debe ampliarse / reducirse a 250 dp
- La imagen debe mantener su relación de aspecto.
- Las
ImageView
dimensiones deben coincidir con las dimensiones de la imagen escalada después de escalar
Por ejemplo, para una imagen de 100 * 150, la imagen y la imagen ImageView
deben ser 166 * 250.
Por ejemplo, para una imagen de 150 * 100, la imagen y la imagen ImageView
deben ser 250 * 166.
Si establezco los límites como
<ImageView
android:id="@+id/picture"
android:layout_width="250dp"
android:layout_height="250dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="20dp"
android:adjustViewBounds="true" />
las imágenes se ajustan correctamente en el ImageView
, pero ImageView
siempre es 250dp * 250dp.
ImageView
la imagen? Por ejemplo, una imagen de 100dp x 150dp se ajustaríaImageView
a las mismas medidas? ¿O quieres decir cómo escalar la imagen a losImageView
límites? Por ejemplo, la imagen de 1000dp x 875dp se escalaría a 250dp x 250dp. ¿Necesitas mantener la relación de aspecto?Respuestas:
(La respuesta fue muy modificada después de aclaraciones a la pregunta original)
Después de aclaraciones:
esto no se puede hacer solo en xml . No es posible escalar tanto la imagen como la imagen
ImageView
para que la única dimensión de la imagen sea siempre 250dp yImageView
tenga las mismas dimensiones que la imagen.Este código escalas
Drawable
de unaImageView
a permanecer en una plaza como 250dp x 250dp con una dimensión exactamente 250dp y mantener la relación de aspecto. LuegoImageView
se cambia el tamaño para que coincida con las dimensiones de la imagen a escala. El código se usa en una actividad. Lo probé a través del controlador de clic de botón.Disfrutar. :)
El código xml para
ImageView
:Gracias a esta discusión por el código de escala:
http://www.anddev.org/resize_and_rotate_image_-_example-t621.html
ACTUALIZACIÓN 7 de noviembre de 2012: se
agregó la comprobación de puntero nulo como se sugiere en los comentarios
fuente
ImageView
, no ambos.Puede que no sea la respuesta para esta pregunta específica, pero si alguien, como yo, está buscando una respuesta para ajustar la imagen en ImageView con un tamaño acotado (por ejemplo,
maxWidth
) mientras conserva la relación de aspecto y luego elimina el espacio excesivo ocupado por ImageView, entonces la solución más simple es usar las siguientes propiedades en XML:fuente
fuente
El código de abajo hace el mapa de bits perfectamente con el mismo tamaño de la vista de imagen. Obtenga la altura y el ancho de la imagen de mapa de bits y luego calcule la nueva altura y ancho con la ayuda de los parámetros de imageview. Eso le da la imagen requerida con la mejor relación de aspecto.
disfrutar.
fuente
intenta agregar
android:scaleType="fitXY"
a tuImageView
.fuente
fitXY
casi siempre cambiará la relación de aspecto de la imagen. OP menciona claramente que la relación de aspecto DEBE mantenerse.Después de buscar un día, creo que esta es la solución más fácil:
fuente
adjustViewBounds
a XMLLa mejor solución que funciona en la mayoría de los casos es
Aquí hay un ejemplo:
fuente
Todo esto se puede hacer usando XML ... los otros métodos parecen bastante complicados. De todos modos, solo establece la altura a lo que quiera en dp, luego establece el ancho para envolver el contenido o viceversa. Use scaleType fitCenter para ajustar el tamaño de la imagen.
fuente
Usa este código:
fuente
Respuesta editada de Jarno Argillanders :
Cómo ajustar la imagen con su ancho y alto:
1) Inicialice ImageView y configure Image:
2) Ahora cambia el tamaño:
scaleImage
Método editado : ( puede reemplazar los valores de límite ESPERADOS )Y .xml:
fuente
Esto lo hizo para mi caso.
fuente
si no funciona para usted, reemplace android: background con android: src
android: src jugará el mayor truco
funciona bien como un encanto
fuente
Necesitaba tener un ImageView y un Bitmap, por lo que el Bitmap se escala al tamaño de ImageView, y el tamaño de ImageView es el mismo del Bitmap escalado :).
Estaba buscando en esta publicación cómo hacerlo, y finalmente hice lo que quería, no de la manera descrita aquí.
y luego en el método onCreateView
y luego el código layoutImageView ()
Y el resultado es que la imagen encaja perfectamente en el interior, manteniendo la relación de aspecto, y no tiene píxeles sobrantes adicionales de ImageView cuando el mapa de bits está dentro.
Resultado
Es importante que ImageView tenga wrap_content y ajuste ViewBounds a true, luego setMaxWidth y setMaxHeight funcionarán, esto está escrito en el código fuente de ImageView,
fuente
Necesitaba hacer esto en un diseño de restricción con Picasso, así que reuní algunas de las respuestas anteriores y se me ocurrió esta solución (ya sé la relación de aspecto de la imagen que estoy cargando, así que eso ayuda):
Llamé a mi código de actividad en algún lugar después de setContentView (...)
En mi XML
Tenga en cuenta la falta de un atributo restrictintBottom_toBottomOf. ImageLoader es mi propia clase estática para métodos de carga de imágenes y constantes.
fuente
Estoy usando una solución muy simple. Aquí mi código:
Mis imágenes se agregan dinámicamente en una vista de cuadrícula. Cuando realiza estos ajustes en la vista de imagen, la imagen se puede mostrar automáticamente en una proporción de 1: 1.
fuente
Utilice las matemáticas simples para cambiar el tamaño de la imagen. puede cambiar el tamaño
ImageView
o puede cambiar el tamaño de la imagen dibujable que la establecidaImageView
. encuentre el ancho y la altura de su mapa de bits en el que desea establecerImageView
y llame al método deseado. supongamos que su ancho 500 es mayor que la altura que el método de llamadaUtiliza esta clase para cambiar el tamaño del mapa de bits.
el código xml es
fuente
Respuesta rápida:
fuente