2013年5月23日

【Android】dp↔px変換コード



最近、dpとspの違いみたいな検索結果でたどり着かれる方が多いので、
ついでにdpとpxの変換コードを掲載してみます。


dpからpxへの変換



/**                                                                                                                 
 * This method convets dp unit to equivalent device specific value in pixels.
 *
 * @param dp A value in dp(Device independent pixels) unit which will be converted to pixels
 * @param context Context to get resources and device specific display metrics
 * @return A float value to represent Pixels equivalent to dp according to device
 */
public static float convertDpToPixel(float dp, Context context){
    Resources resources = context.getResources();
    DisplayMetrics metrics = resources.getDisplayMetrics();
    float px = dp * (metrics.densityDpi /160f);
    return px; 
}

pxからdpへの変換

/**
 * This method converts device specific pixels to device independent pixels.
 *
 * @param px A value in px (pixels) unit which will be converted to dp
 * @param context Context to get resources and device specific display metrics
 * @return A float value to represent db equivalent to px value
 */
public static float convertPixelsToDp(float px, Context context){
    Resources resources = context.getResources();
    DisplayMetrics metrics = resources.getDisplayMetrics();
    float dp = px / (metrics.densityDpi / 160f);
    return dp; 
}


引数はfloatになっていますが、intの場合が多いと思うので、castしてください。


こちらの記事も参考にどうそ

【Android】今さら聞けないpx、sp、dip、dpの違い