根据屏幕尺寸调整可绘制尺寸

时间:2013-07-21 04:29:53

标签: android bitmap textview imageview drawable

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

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,但是当我们在更大的屏幕上运行应用程序时,图像看起来很小。

是否有任何针对不同屏幕尺寸缩放图片的建议?

1 个答案:

答案 0 :(得分: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的值。

有关支持多种分辨率/密度的详情,请参阅here