機種ごとの画面密度の取得方法

Android端末では機種ごとに画面の大きさに比べて解像度の差が激しいため、画面密度(DPI)が異なっています。

その画面密度をコードから取得するには次のようにします。

float scale = getResources().getDisplayMetrics().density;

例えば、480x800のhdpiの画面密度の端末では480x800という画面サイズに関係なく1.5という値が返ってきます。

使い方としてはコード中でビューを生成するときにそのパディングなどを調整するのに使います。

例えば、次のようにしてパディングを調整することができます。

public class MainActivity extends Activity
{
    float scale;
        //画面密度
    
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        
        scale = getResources().getDisplayMetrics().density;
            //画面密度を取得
        TextView content_text = new TextView(this);
        content_text.setText("テキストビュー);
        content_text.setPadding((int)(scale * 5), (int)(scale * 5),
								(int)(scale * 5), (int)(scale * 5));
            //画面密度に合わせてパディングを変える。
        
        setContentView(context_text);
    }
    
}

この例ではscaleという値が画面密度でそれにパディングの大きさをかけてテキストビューのパディングを調節しています。

関連項目
プライバシーポリシー