Como ajustar uma imagem de tamanho aleatório a uma ImageView
?
Quando:
- Inicialmente as
ImageView
dimensões são 250dp * 250dp - A dimensão maior da imagem deve ser aumentada / reduzida para 250dp
- A imagem deve manter sua proporção
- As
ImageView
dimensões devem corresponder às dimensões da imagem em escala após o dimensionamento
Por exemplo, para uma imagem de 100 * 150, a imagem e a ImageView
devem ser 166 * 250.
Por exemplo, para uma imagem de 150 * 100, a imagem e a ImageView
devem ser 250 * 166.
Se eu definir os limites 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" />
as imagens se encaixam corretamente no ImageView
, mas ImageView
sempre são 250dp * 250dp.
ImageView
imagem? Por exemplo, a imagem de 100dp x 150dp seria dimensionadaImageView
para as mesmas medidas? Ou você quer dizer como dimensionar a imagem até osImageView
limites. Por exemplo, a imagem de 1000dp x 875dp seria dimensionada para 250dp x 250dp. Você precisa manter a proporção?Respostas:
(A resposta foi fortemente modificada após esclarecimentos à pergunta original)
Após esclarecimentos:
Isso não pode ser feito apenas em xml . Não é possível dimensionar a imagem e a imagem
ImageView
para que a única dimensão da imagem seja sempre de 250 pd eImageView
tenha as mesmas dimensões da imagem.Este escalas de código
Drawable
de umImageView
para ficar em um quadrado como 250DP x 250DP com uma dimensão exatamente 250DP e mantendo a relação de aspecto. Em seguida, oImageView
é redimensionado para corresponder às dimensões da imagem em escala. O código é usado em uma atividade. Testei-o através do manipulador de cliques de botão.Aproveitar. :)
O código xml para o
ImageView
:Obrigado a esta discussão pelo código de dimensionamento:
http://www.anddev.org/resize_and_rotate_image_-_example-t621.html
ATUALIZAÇÃO 7 de novembro de 2012:
verificação de ponteiro nulo adicionada, conforme sugerido nos comentários
fonte
ImageView
, não os dois.Pode não ser a resposta para esta pergunta específica, mas se alguém, como eu, estiver procurando uma resposta para ajustar a imagem no ImageView com tamanho limitado (por exemplo
maxWidth
), preservando a Proporção da imagem e depois se livrar do espaço excessivo ocupado pelo ImageView, a solução mais simples é usar as seguintes propriedades em XML:fonte
fonte
O código Abaixo cria o bitmap perfeitamente com o mesmo tamanho da visualização de imagem. Obtenha a altura e a largura da imagem de bitmap e calcule a nova altura e largura com a ajuda dos parâmetros do imageview. Isso fornece a imagem necessária com a melhor proporção.
desfrutar.
fonte
tente adicionar
android:scaleType="fitXY"
ao seuImageView
.fonte
fitXY
quase sempre altera a proporção da imagem. O OP menciona claramente que a proporção deve ser mantida.Depois de procurar um dia, acho que essa é a solução mais fácil:
fonte
adjustViewBounds
ao XMLA melhor solução que funciona na maioria dos casos é
Aqui está um exemplo:
fonte
tudo isso pode ser feito usando XML ... os outros métodos parecem bastante complicados. De qualquer forma, basta definir a altura para o que quiser no dp e depois definir a largura para agrupar o conteúdo ou vice-versa. Use scaleType fitCenter para ajustar o tamanho da imagem.
fonte
Use este código:
fonte
Editado Jarno Argillanders resposta:
Como encaixar Imagem com a sua largura e altura:
1) Inicializar ImageView e conjunto Image:
2) Agora redimensione:
scaleImage
Método editado : ( você pode substituir valores limitados EXPECTIVOS )E .xml:
fonte
Isso foi feito no meu caso.
fonte
se não estiver funcionando, substitua android: background por android: src
android: src fará o maior truque
está funcionando bem como um encanto
fonte
Eu precisava ter um ImageView e um Bitmap, para que o Bitmap seja dimensionado para o tamanho do ImageView, e o tamanho do ImageView seja o mesmo do Bitmap :).
Eu estava olhando este post para saber como fazê-lo e, finalmente, fiz o que queria, mas não da maneira descrita aqui.
e depois no método onCreateView
e, em seguida, o código layoutImageView ()
E o resultado é que a imagem se encaixa perfeitamente, mantendo a taxa de proporção e não possui mais pixels restantes do ImageView quando o Bitmap está dentro.
Resultado
É importante que o ImageView tenha wrap_content e ajusteViewBounds como true; setMaxWidth e setMaxHeight funcionarão; isso está escrito no código-fonte do ImageView,
fonte
Eu precisava fazer isso em um layout de restrição com o Picasso, então juntei algumas das respostas acima e criei esta solução (eu já conheço a proporção da imagem que estou carregando, o que ajuda):
Chamado no meu código de atividade em algum lugar após setContentView (...)
No meu XML
Observe a falta de um atributo constraintBottom_toBottomOf. ImageLoader é minha própria classe estática para carregamento de imagens, métodos e constantes utilitários .
fonte
Estou usando uma solução muito simples. Aqui meu código:
Minhas fotos são adicionadas dinamicamente em um gridview. Quando você faz essas configurações na visualização de imagem, a imagem pode ser exibida automaticamente na proporção de 1: 1.
fonte
Use Matemática simples para redimensionar a imagem. você pode redimensionar
ImageView
ou redimensionar a imagem desenhável do que ativadaImageView
. encontre a largura e a altura do seu bitmap em que deseja definirImageView
e chame o método desejado. suponha que sua largura 500 seja maior que a altura do que o método de chamadaVocê usa essa classe para redimensionar o bitmap.
código xml é
fonte
Resposta rápida:
fonte