0

我在屏幕上显示一些 TexViews。它们还包含文本以及可绘制的图像。我的问题是如何根据下面的屏幕分辨率缩放可绘制对象是我当前正在运行的代码:

Drawable dr = getResources().getDrawable(R.drawable.image);
        Bitmap bitmap = ((BitmapDrawable) dr).getBitmap();
        Drawable d = new BitmapDrawable(this.getResources(),Bitmap.createScaledBitmap(bitmap, 35, 35, true));
        textView.setCompoundDrawablesWithIntrinsicBounds(d, null,null,null);

这里我使用了比率 35,但是当我们在更大的屏幕上运行应用程序时,图像看起来很小。

任何建议为不同的屏幕尺寸缩放图像?

4

1 回答 1

1

首先,得到密度尺度:

DisplayMetrics dm = new DisplayMetrics();
mainContext.getWindowManager().getDefaultDisplay().getMetrics(dm);
float densityScale = dm.density;

然后在使用前通过 densityScale 值缩放所需的大小:

float scaledWidth = 35 * densityScale;
float scaledHeight = 35 * densityScale;

Drawable dr = getResources().getDrawable(R.drawable.image);
Bitmap bitmap = ((BitmapDrawable) dr).getBitmap();
Drawable d = new BitmapDrawable(this.getResources(),Bitmap.createScaledBitmap(bitmap, scaledWidth, scaledHeight, true));
textView.setCompoundDrawablesWithIntrinsicBounds(d, null,null,null);

这假设 35 是 160dpi 的正确尺寸。如果不是,您需要将 35 更改为适合 160dpi 的值。

有关支持多种分辨率/密度的更多信息,请参见此处

于 2013-07-21T11:59:45.947 回答