2013-07-21 196 views
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,但是当我们更大的屏幕上运行应用程序的图像显示为小。

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

回答

0

首先,获得密度规模:

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

相关问题