RelativeLayoutで使用されるLayoutParamsのDP
RelativeLayout で LayoutParams に指定する単位の dp は、デバイス非依存ピクセル密度を表します。dp(density-independent pixels)は Android で使用される単位で、デバイスの画面密度に応じて異なるピクセル値に変換されるため、異なるデバイス間でも UI を統一して表示できます。この dp を単位として使用することで、異なる画面密度のデバイスに対応できます。
RelativeLayoutでLayoutParamsを使用する際は、TypedValueクラスのapplyDimension()メソッドを使用するとDPをピクセル値に変換でき、LayoutParamsオブジェクトに設定できます。例は次のとおりです。
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
(int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, widthInDP, getResources().getDisplayMetrics()),
(int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, heightInDP, getResources().getDisplayMetrics())
);
widthInDPとheightInDPは、設定したいpx幅とpx高のDP値で、applyDimension()メソッドはDP値をpx値に変換し、getDisplayMetrics()メソッドを使用して、現在使用している端末の画面密度情報を取得しています。
そして、paramsオブジェクトは、RelativeLayoutの子ビューに適用して、これらのサイズパラメータを使用させることができます。
RelativeLayoutを使用する際は、LayoutParamsのWRAP_CONTENT、MATCH_PARENTなどの特殊値をDPに変換する必要はなく、定数を使用します。