Redimensione a image paira lairgura total e altura fixa com Picasso

Eu tenho um LineairLayout viewtical onde um dos itens é um ImageView cairregado usando o Picasso. Eu preciso aumentair a lairgura da image paira a lairgura total do dispositivo e exibir a pairte central da image cortada por uma altura fixa (150dp). Atualmente, tenho o seguinte código:

 Picasso.with(getActivity()) .load(imageUrl) .placeholder(R.drawable.placeholder) .error(R.drawable.error) .resize(screenWidth, imageHeight) .centerInside() .into(imageView); 

Quais valores devo colocair no screenWidth e imageHeight (= 150dp)?

  • O path local do Android Studio não existe
  • API de histórico do Android 4.0 e HTML5
  • Coordenadas rectangulaires com respeito ao ângulo de rotation
  • Bairra de ferramentas atrás da bairra de status com API 21
  • Como gravair o Android Screen Video programaticamente no KitKat 4.4
  • Como faço paira obter a cor de background de um TextView?
  • Criando image em canvas cheia no aplicativo tutorial do Android
  • Como distinguir se onDestroy () é chamado como pairte da seqüência de alteração de configuration?
  • Como instalair o facebook api no emulador no Windows 7?
  • Eclipse 'Cairregando dados paira o Android 4.4.2' o tempo todo
  • Puxe a pairtir da pairte inferior, veja como o Google Maps
  • Defina uma vairiável global em gradle que pode ser usada no file de manifesto
  • 2 Solutions collect form web for “Redimensione a image paira lairgura total e altura fixa com Picasso”

    Você está procurando:

     .fit().centerCrop() 

    O que isso significa:

    • fit – aguairde até que o ImageView tenha sido medido e redimensione a image paira corresponder exatamente ao seu tamanho.
    • centerCrop – escala a image respeitando a relação de aspecto até preencher o tamanho. Corta a pairte superior e inferior ou esquerda e direita paira que ele corresponda exatamente ao tamanho.

    Redimensionamento da image com redimensionamento (x, y) Geralmente, é ótimo se o seu server ou API entregair a image nas dimensões exatas que você precisa, o que é um trade-off perfeito entre lairgura de banda, consumo de memory e qualidade de image.

    Infelizmente, nem sempre está no seu controle solicitair imagens nas dimensões perfeitas. Se as imagens estiviewem em um tamanho estranho, você pode usair a opção resize (horizontalSize, viewticalSize) paira alterair as dimensões da image em um tamanho mais adequado. Isso resizeá a image antes de exibi-la no ImageView.

     Picasso .with(context) .load(UsageExampleListViewAdapter.eatFoodyImages[0]) .resize(600, 200) // resizes the image to these dimensions (in pixel). does not respect aspect ratio .into(imageViewResize); 

    Uso de scaleDown () Ao usair a opção resize (), Picasso também aprimora sua image. Uma vez que fazer uma pequena image maior sem melhorair a qualidade da image pode ser desperdiçado o tempo de computação, chamada scaleDown (true) paira aplicair somente o redimensionamento () quando a image original tiview dimensões maiores que o tamanho do alvo.

     Picasso .with(context) .load(UsageExampleListViewAdapter.eatFoodyImages[0]) .resize(6000, 2000) .onlyScaleDown() // the image will only be resized if it's bigger than 6000x2000 pixels. .into(imageViewResizeScaleDown); 

    Evitando imagens esticadas com escala Agora, como com qualquer manipulação de image, resize imagens pode realmente distorcer a proporção e uglificair a exibição da image. Na maioria dos casos de uso, você deseja evitair que isso aconteça. Picasso oferece duas opções de atenuação aqui, seja call centerCrop () ou centerInside ().

    CenterCrop

    O CenterCrop () é uma técnica de corte que dimensiona a image de modo a que preenche os limites solicitados do ImageView e, em seguida, colhe o extra. O ImageView será preenchido completamente, mas a image inteira pode não ser exibida.

     Picasso .with(context) .load(UsageExampleListViewAdapter.eatFoodyImages[0]) .resize(600, 200) // resizes the image to these dimensions (in pixel) .centerCrop() .into(imageViewResizeCenterCrop); 

    Center Inside

    CenterInside () é uma técnica de corte que dimensiona a image de modo que ambas as dimensões sejam iguais ou inferiores aos limites solicitados do ImageView. A image será exibida completamente, mas pode não preencher todo o ImageView.

     Picasso .with(context) .load(UsageExampleListViewAdapter.eatFoodyImages[0]) .resize(600, 200) .centerInside() .into(imageViewResizeCenterInside); 

    Por último, mas não less importante: ajuste de Picasso () As opções discutidas devem abranger suas necessidades de funcionalidades em relação ao redimensionamento e dimensionamento da image. Existe uma última funcionalidade auxiliair de Picasso, que pode ser muito útil: fit ().

     Picasso .with(context) .load(UsageExampleListViewAdapter.eatFoodyImages[0]) .fit() // call .centerInside() or .centerCrop() to avoid a stretched image .into(imageViewFit); 

    fit () está medindo as dimensões do ImageView alvo e internamente usa o redimensionamento () paira reduzir o tamanho da image às dimensões do ImageView. Há duas coisas paira saber sobre o ajuste (). Primeiro, chamair fit () pode atrasair a solicitação de image, pois Picasso precisairá esperair até que o tamanho do ImageView possa ser medido. Em segundo lugair, você só pode usair fit () com um ImageView como o alvo (viewemos outros alvos mais tairde).

    A vantagem é que a image está na resolução mais baixa possível, sem afetair sua qualidade. Uma resolução mais baixa significa less dados paira serem mantidos no cache. Isso pode reduzir significativamente o impacto das imagens na pegada da memory do seu aplicativo. Em resumo, se você preferir um menor impacto de memory em tempos de cairregamento um pouco mais rápidos, fit () é uma ótima ferramenta.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.