Android Scale图像到最大尺寸
问题描述:
嗨,我正在加载图像的应用程序,我正在寻找缩放每个图像的最大可能的大小,例如,如果图像是一个风景图像(如果宽度较大比高度)我想拉伸的宽度来填补手机的宽度和缩放高度,以保持它的长宽比。如果高度大于宽度,即一幅肖像图像,图像应该缩放以适应手机的高度,然后调整宽度以保持纵横比我有一些麻烦让这个工作这里是我的'至今已完成,尽管任何帮助将不胜感激。Android Scale图像到最大尺寸
final ImageView i = new ImageView(mContext);
i.setImageResource(mImageIds[position]);
i.setBackgroundResource(android.R.color.black);
//TODO need to get actual size of drawable not view size which is 0
ViewTreeObserver vto = i.getViewTreeObserver();
vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
public boolean onPreDraw() {
int w = i.getMeasuredWidth();
int h = i.getMeasuredHeight();
Display display = getWindowManager().getDefaultDisplay();
int width = display.getWidth();
int height = display.getHeight();
if(w <= h){
//TODO need to think about landscape
h = height - convertDpToPixel(50, context);
w = w*(width);
}else{
h = h*(height);
w = width;
}
//TODO set imageview to w and h
return true;
}
});
答
用于获取显示宽度,高度
DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int height = displaymetrics.heightPixels;
int wwidth = displaymetrics.widthPixels;
调整大小的ImageView
ImageView img=(ImageView)findViewById(R.id.ImageView01);
Bitmap bmp=BitmapFactory.decodeResource(getResources(), R.drawable.sc01);
Bitmap resizedbitmap=Bitmap.createScaledBitmap(bmp, width, height, true);
img.setImageBitmap(resizedbitmap);
+0
问题是我需要知道图像尺寸是什么,以便我可以保持不想扭曲它的宽高比 – user577732
答
将高度或宽度增加到最大值,具体取决于哪一个已经更大。
现在,让我们说你有一个横向图像的工作:
你已经扩展了宽度它的最大尺寸,显示器的宽度
您展开侧是图像的宽度,所以假设显示宽度=宽度和图像的宽度= W:
宽度/ W = R
以r将显示宽度和所述图像宽度之间的比率。现在你需要使用它来增加你的身高。
只需将高度乘以比率,然后将图像的新高度设置为结果数字。
如果你最终得到了一幅肖像图像...嗯,我想你可以弄明白。这几乎是一回事。
毕竟,我认为这只是将图像定位在屏幕中心的问题。
当你说你有麻烦让你的代码工作,什么问题(S)有你有完全相同?异常抛出?图像没有按照你的预期重新调整? – Kerry
Ru寻找这个http://stackoverflow.com/a/9478320/1012284 –
我试图使用位图resizedbitmap和什么不是和得到OOM错误,所以我更多的是,我应该如何设置图像视图到我的W和H – user577732