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への変換ができます。
本当はもっと簡単に出来るのか?
もし、もっといい方法ありましたら教えて頂けたらと思います。
関連する記事:
- [Android] プログラム中でstrings.xmlの文字列を取得する方法
- AndroidManifest.xmlに記述した
のデータ取得方法 - PHP入門 第1回 PHPを知ろう
- [iPhoneアプリ]TabBarControllerで選択中のTabをプログラムで切り替える方法
- AndroidでActivityのスタックを削除する方法
使わせていただきました。ありがとうございます!