如何根据屏幕尺寸缩放图像?

时间:2013-08-09 10:28:23

标签: android bitmap android-imageview bitmapimage

我正在制作一个Android应用程序,我使用它来缩放位图    bitmap2 = Bitmap.createScaledBitmap(bmp, 150, 150, true);

这张图片在大屏幕的手机上看起来还不错......但是在小尺寸的手机上使用它时它会不成比例.....任何人都知道它的解决方案吗?

2 个答案:

答案 0 :(得分:6)

您需要在dp中指定图像大小,就像在XML中一样。要从dp转换为像素,您可以使用以下内容:

float ht_px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, ht, getResources().getDisplayMetrics());
float wt_px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, wt, getResources().getDisplayMetrics());

对于您的特定用途:

float ht_px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 150, getResources().getDisplayMetrics());
float wt_px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 150, getResources().getDisplayMetrics());

并使用ht_px和wt_px缩放位图。您可能需要将150更改为75。

答案 1 :(得分:4)

获取屏幕的高度和宽度并计算尺寸

DisplayMetrics display = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(display);
    int screenWidth = display.widthPixels;
    int  screenHeight = display.heightPixels; 

就像你想要在屏幕的一半显示你的位图 -

 bitmap2 = Bitmap.createScaledBitmap(bmp, screenWidth/2, screenHeight/2, true);

根据您的要求计算。