2

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

这张图片在大屏幕手机上看起来足够好......但在小尺寸手机上使用时就变得不成比例......有人知道解决方案吗?

4

2 回答 2

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。

于 2013-08-09T10:33:09.337 回答
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);

根据您的要求计算。

于 2013-08-09T10:35:05.643 回答