嗨,我正在开发一个将加载图片的应用程序,我正在寻找将每个图像缩放到最大可能尺寸,例如,如果图像是横向图像(如果宽度大于高度),我希望拉伸宽度以填充手机的宽度和缩放高度以保持其纵横比。如果高度大于宽度,即肖像图像,图像应缩放以适应手机的高度,然后应调整宽度以保持纵横比我有点麻烦让这个工作在这里是我的'到目前为止,虽然任何帮助将不胜感激。
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;
}
});
答案 0 :(得分:1)
将高度或宽度增加到最大值,具体取决于哪个已经更大。
现在,假设您正在处理风景图片:
您已经将宽度扩展到最大尺寸,显示宽度
你扩展的那一面是图像的宽度,所以假设显示宽度=宽度,图像的宽度= w:
宽度/ w = r
因此r将是显示宽度和图像宽度之间的比率。现在你需要用它来增加身高。
只需将高度乘以比率,然后将图像的新高度设置为结果数字。
如果你最终得到了一幅肖像......好吧,我想你能够弄明白了。这几乎是一回事。
毕竟,我认为这只是将图像定位在屏幕中央的问题。
答案 1 :(得分:1)
获取显示宽度,高度
DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int height = displaymetrics.heightPixels;
int wwidth = displaymetrics.widthPixels;
用于调整图像视图
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);