Androidでpxでの指定をdipに変換する方法


Androidで、どうしてもプログラム中で画像の表示位置の指定をしないといけない時に

困るのが、画面解像度の違い

xmlでレイアウトを指定する場合「dip」を使用できるのですが

プログラム上では、「px」での指定になるのですがそれだと端末の解像度が異なると表示位置が異なるという困った事象が発生します。

なので、プログラム上でもピクセルでの指定でなく、dipでの指定をする方法です。

その為には、「DisplayMetrics」を使用します。

以下がそのコードです。

    /**
     * pxからdipへの変換処理
     */
    public static float px2Dip(Activity activity, float pixel) {
    	float dip = 0;
    	DisplayMetrics metrics = new DisplayMetrics();
    	activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);
    	dip = metrics.scaledDensity * pixel;
    	return dip;
    }

このような感じで記述することでpxからdipへの変換ができます。

本当はもっと簡単に出来るのか?

もし、もっといい方法ありましたら教えて頂けたらと思います。

関連する記事:

Facebookでコメント

コメント

    • 伊山辰徳
    • 2013年 11月28日

    使わせていただきました。ありがとうございます!

  1. トラックバック 0

*

return top