ldpiは〜120dpiを意味し、mdpiは〜160dpiを意味し、hdpiは〜240dpiを意味します。xhdpiは〜320dpiを意味します。リソースのldpi:mdpi:hdpi:xhdpiの比率は3:4:6:8に従うことができます。
これで、すべての解像度で異なる画像を使用できるようになりました。これはより優れており、問題はないはずです。すべてに異なる画像を使用できない場合は、xhdpiとランタイムの画像を使用して、画面の解像度に応じて画像のサイズを変更できます。
以下のサンプルコードを使用して、実行時の画面解像度を知ることができます。
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
switch (metrics.densityDpi) {
case 120:
//your stuff
break;
case 160:
////your stuff
break;
case 240:
///your suff
break;
case 320:
//your stuff
break;
}
ビットマップのサイズを変更するサンプルコード::
Bitmap mIcon_val = your bitmap;
Matrix matrix = new Matrix();
matrix.postScale((float)newwidth/mIcon_val.getWidth(), (float)newheight/mIcon_val.getHeight());
Bitmap resizedBitmap = Bitmap.createBitmap(mIcon_val, 0, 0, mIcon_val.getWidth(), mIcon_val.getHeight(), matrix, true);
これで、新しいビットマップの新しい幅と高さが使用できるようになりました。