android px,dp,sp大小转换工具

package com.voole.playerlib.util;

import android.content.Context;

/**
 * Android大小单位转换工具类<br/>
 * 
 * float scale = context.getResources().getDisplayMetrics().density;
 */
public class DisplayUtil {
 /**
  * 将px值转换为dip或dp值,保证尺寸大小不变
  * 
  * @param pxValue
  * @param scale(DisplayMetrics类中属性density)
  * @return
  */
 public static float px2dip(float pxValue, float scale) {
  return  (pxValue / scale + 0.5f);
 }
 
 /**
  * 将px值转换为dip或dp值,保证尺寸大小不变
  * 
  * @param pxValue
  * @param context
  * @return
  */
 public static float px2dip(float pxValue,Context context) {
     float scale = context.getResources().getDisplayMetrics().density;
     return  px2dip( pxValue,  scale);
 }

 /**
  * 将dip或dp值转换为px值,保证尺寸大小不变
  * 
  * @param dipValue
  * @param scale(DisplayMetrics类中属性density)
  * @return
  */
 public static float dip2px(float dipValue, float scale) {
  return  (dipValue * scale + 0.5f);
 }
 
 /**
  * 将dip或dp值转换为px值,保证尺寸大小不变
  * 
  * @param dipValue
  * @param context 
  * @return
  */
 public static float dip2px(float dipValue, Context context) {
     float scale = context.getResources().getDisplayMetrics().density;
     return dip2px(dipValue, scale);
 }

 /**
  * 将px值转换为sp值,保证文字大小不变
  * 
  * @param pxValue
  * @param fontScale(DisplayMetrics类中属性scaledDensity)
  * @return
  */
 public static float px2sp(float pxValue, float fontScale) {
  return  (pxValue / fontScale + 0.5f);
 }

 /**
  * 将sp值转换为px值,保证文字大小不变
  * 
  * @param spValue
  * @param fontScale(DisplayMetrics类中属性scaledDensity)
  * @return
  */
 public static float sp2px(float spValue, float fontScale) {
  return  (spValue * fontScale + 0.5f);
 }
 /**
  * 将sp值转换为px值,保证文字大小不变
  * 
  * @param spValue
  * @param Context
  * @return
  */
 public static float sp2px(float spValue,Context context) {
     float scale = context.getResources().getDisplayMetrics().density;
     return  sp2px( spValue,  scale);
 }
}

感觉挺好用的

原文地址:https://www.cnblogs.com/yzjT-mac/p/6037519.html