ピカソを使用して画像をImageViewにトリミングするにはどうすればよいですか?
デフォルトはそれを縮小するように見えるので、全体がフィット感がそれを伸ばすように見えることを示しています。センタークロップ自体が壊れます。フィットセンタークロップはちょうどフィットと同じようです
centerCrop()
を使用してみてください
Picasso.with(mContext)
.load(url)
.centerCrop()
.resize(yourImageView.getMeasuredWidth(),yourImageView.getMeasuredHeight())
.error(R.drawable.error)
.placeholder(R.drawable.blank_img)
.into(yourImageView);
addOnPreDrawListener
リスナーを追加する必要があります。そうしないと、イメージビューが描画されていないときに幅と高さが0になります。 addOnPreDrawListener
の使用方法の詳細については、 ここ に移動してください。
CenterCrop()
は、画像を拡大縮小してImageView
の要求された境界を埋めてから、余分な部分をトリミングするトリミング手法です。 ImageView
は完全に埋められますが、画像全体が表示されない場合があります。
_Picasso
.with(context)
.load(UsageExampleListViewAdapter.eatFoodyImages[0])
.resize(600, 200) // resizes the image to these dimensions (in pixel)
.centerCrop()
.into(imageViewResizeCenterCrop);
_
CenterInside()
は、両方の次元がImageView
の要求された境界以下になるように画像を拡大縮小するトリミング手法です。画像は完全に表示されますが、ImageView
全体を埋めることはできません。
_Picasso
.with(context)
.load(UsageExampleListViewAdapter.eatFoodyImages[0])
.resize(600, 200)
.centerInside()
.into(imageViewResizeCenterInside);
_
説明したオプションは、画像のサイズ変更とスケーリングに関する機能のニーズをカバーする必要があります。ピカソの最後のヘルパー機能が1つあり、これは非常に便利です:fit()
。
_Picasso
.with(context)
.load(UsageExampleListViewAdapter.eatFoodyImages[0])
.fit()
// call .centerInside() or .centerCrop() to avoid a stretched image
.into(imageViewFit);
_
CenterCropまたはcenterInside()メソッドを呼び出す前にresizeを呼び出す必要があります。そうしないと、ピカソはターゲットの幅/高さが0であると文句を言います。
public class MainActivity extends Activity {
ImageView imageView;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageView = (ImageView) findViewById(R.id.imageView);
}
@Override
public void onWindowFocusChanged(boolean hasFocus) {
if (hasFocus) {
Picasso.with(this)
.load("http://i.imgur.com/removed.png")
.resize(imageView.getMeasuredWidth(), imageView.getMeasuredHeight())
.centerCrop() // or centerInside()
.into(imageView);
}
super.onWindowFocusChanged(hasFocus);
}
}
そして、これがレイアウト内で定義されたimageViewです:
<ImageView
Android:layout_width="160dp"
Android:layout_height="160dp"
Android:id="@+id/imageView"
/>