まず初めに、
マルチ画面対応を実現するために欠かせない「画面密度」「解像度」についてです。
http://developer.android.com/intl/ja/guide/practices/screens_support.html

・画面密度
画面の物理的な領域内におけるピクセル数。
通常dpi(ドット数/インチ dot per inch)。
画面密度の低い(lowな)画面は、画面密度の高い(highな)画面と比べて、領域あたりのピ
クセル数が少なくなります。
Androidは、画面密度の程度をlow, medium, high, extra highの4つに分類しています。
現在の、画面密度は下記になります。
  • low dpi(ldpi):120dpi
  • mdpi(medium dpi):160dpi
  • hdpi(high dpi):240dpi
  • xhdpi(extra high dpi):320dpi 

screens-densities


DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
Log.d(tag, metrics.density); // ディスプレイの論理的な密度   1.5
Log.d(tag, metrics.densityDpi); // インチ当たりのドット数で表した画面の密度  240
Log.d(tag, metrics.scaledDensity); // ディスプレイに表示されるフォントの倍率( density と同じ値だがユーザーが変更可能)1.5
Log.d(tag, metrics.widthPixels); // ディスプレイの絶対的な幅(px) 480
Log.d(tag, metrics.heightPixels);  // ディスプレイの絶対的な高さ(px) 854
Log.d(tag, metrics.xdpi); // 画面のx軸方向のの1インチあたりの正確な物理的なピクセル数 234.46153
Log.d(tag, metrics.ydpi); // 画面のy軸方向のの1インチあたりの正確な物理的なピクセル数 233.24301

------------------
px と dp の関係式
1px * density = 1dp での px 数

px → dp 変換
n (px) / density = m (dp)

dp → px 変換
m (dp) * density = n (px)

----------------
画像は
res/drawable-hdpi/
以下に配置しました。
------------------
 private final int twW = 100; //mdpiにおけるイメージの幅(px)
 private final int twH = 180; //mdpiにおけるイメージの高さ(px) 

getWindowManager().getDefaultDisplay().getMetrics(metrics);
scaledDensity = metrics.scaledDensity; //ディスプレイに表示されるフォントの倍率

c.drawBitmap(img, twW*MainActivity.scaledDensity,0,null); //画像の位置
c.drawBitmap(img, twW*MainActivity.scaledDensity, twH*MainActivity.scaledDensity, null); //画像の位置

---------------

※マルチ画面対応する場合は、
layout フォルダのxmlファイルを使って振り分けることができるようです。

にほんブログ村 IT技術ブログ 在宅プログラマーへ にほんブログ村 IT技術ブログ PHPへ にほんブログ村 IT技術ブログ IT技術情報へ