我在屏幕上显示一些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,但是当我们在更大的屏幕上运行应用程序时,图像看起来很小。
是否有任何针对不同屏幕尺寸缩放图片的建议?
答案 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。