我相信我已經想通了,它其實很簡單。基本上我採用原始位圖的width()和height(),並將它們轉換爲dp,然後使用新的dp值爲高度和寬度縮放位圖。結果是所有屏幕上的大小相同的位圖。我仍在測試這個,但到目前爲止它已經在我裝載的每個模擬器上工作過了。
public BitmapDrawable getScaledBitmapDrawable(int indexID) {
Bitmap bitmapOrg = BitmapFactory.decodeResource(mResources,
myNewImageList.get(indexID));
int width = bitmapOrg.getWidth();
int height = bitmapOrg.getHeight();
int nwidth = (int) convertPixelsToDp(width,c);
int nheight = (int) convertPixelsToDp(height,c);
Bitmap bitmapResized = Bitmap.createScaledBitmap(bitmapOrg, nwidth,
nheight, false);
return BitmapDrawable bitmapDrawable = new BitmapDrawable(mResources,
bitmapResized);
}
//conversion method
public static float convertPixelsToDp(float px, Context context){
Resources resources = context.getResources();
DisplayMetrics metrics = resources.getDisplayMetrics();
float dp = px/(metrics.densityDpi/160f);
return dp;
}