それは、画像の大きさ、完璧な比率との意志のサイズ以下のコードのために重要ではありません、それは最大幅を行いますあなたが最大の幅を望んでいない場合は、コードから次元を変更して、解決策suck.ifを作らずに。あなたはピカソが必要です。
private Dimensions getScreenDimensions()
{
DisplayMetrics metrics = new DisplayMetrics();
WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
display.getMetrics(metrics);
final int widthScreen = metrics.widthPixels;
int heightScreen = metrics.heightPixels;
Dimensions screenDimen = new Dimensions(metrics.widthPixels,metrics.heightPixels); // custom class
return screenDimen;
}
private Bitmap makeCalc(Dimensions screenDimen, Dimensions imageDimen,Bitmap bmp)
{
float widthRatio = screenDimen.getWidth()/imageDimen.getWidth();
float scaledHeight = imageDimen.getHeight() * widthRatio;
imageBmp = Bitmap.createScaledBitmap(bmp, (int)screenDimen.getWidth(), (int) scaledHeight, true);
//image.setImageBitmap(resized);
return imageBmp;
}
public class Dimensions {
float width;
float height;
public Dimensions(float width, float height) {
this.width = width;
this.height = height;
}
public float getHeight() {
return height;
}
public void setHeight(float height) {
this.height = height;
}
public float getWidth() {
return width;
}
public void setWidth(float width) {
this.width = width;
}
}
Target target = new Target() {
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
int width = bitmap.getWidth(); // original width
int height = bitmap.getHeight(); // original heigh
Log.w(TAG, "onBitmapLoaded: " + width + " " + height);
Bitmap newBmp = makeCalc(getScreenDimensions(),new Dimensions(width,height),bitmap);
imageView.setImageBitmap(newBmp);
}
@Override
public void onBitmapFailed(Drawable errorDrawable) {
Log.w(TAG, "onBitmapFailed: "+errorDrawable);
}
@Override
public void onPrepareLoad(Drawable placeHolderDrawable) {
Log.w(TAG, "onPrepareLoad: ");
}
};
Picasso.with(this).load(yourURL).into(target);
imageView.setTag(target);
AFAICTを手動で行う必要があります。つまり、 'ImageView'にハードコードされた幅/高さを与えます。 – Sufian
あなたのイメージビューを '不可視'にし、onResumeでイメージビューの幅と高さを 'visible'に設定します。それを行うには、別のスレッドを使用する必要があります。それが動作することを願っています。 –
@Mamta Kaundalあなたのアプリケーションが起動されると、あなたのデバイスの幅が取得され、イメージビューで設定されます。他の賢い設定は、あなたのpiccassoライブラリのサイズと幅 –