Android 根据屏幕大小调整可拉伸尺寸

Android 根据屏幕大小调整可拉伸尺寸,android,bitmap,textview,imageview,drawable,Android,Bitmap,Textview,Imageview,Drawable,我正在屏幕上显示一些视图。它们包含文本以及可绘制的图像。我的问题是如何根据屏幕分辨率缩放可绘制图像 下面是我当前运行的代码: Drawable dr = getResources().getDrawable(R.drawable.image); Bitmap bitmap = ((BitmapDrawable) dr).getBitmap(); Drawable d = new BitmapDrawable(this.getResources(),Bitmap.c

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

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


是否有针对不同屏幕大小缩放图像的建议?

首先,获取密度比例:

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的值

有关支持多分辨率/密度的更多信息,请参阅