dp、px单位换算工具类

单位换算
在程序中,我们可以非常方便地对一些单位的换算,下面的代码给出了一种换算的方法我们可以把这些代码作为工具类保存在项目中
package com.lgl.playview;

import android.content.Context;

/**

  • dp,sp转换成px的工具类

  • Created by lgl on 16/3/23.
    */
    public class DisplayUtils {

    /**

    • 将px值转换成dpi或者dp值,保持尺寸不变
    • @param content
    • @param pxValus
    • @return
      */
      public static int px2dip(Context content, float pxValus) {
      final float scale = content.getResources().getDisplayMetrics().density;
      return (int) (pxValus / scale + 0.5f);
      }

    /**

    • 将dip和dp转化成px,保证尺寸大小不变。
    • @param content
    • @param pxValus
    • @return
      */
      public static int dip2px(Context content, float pxValus) {
      final float scale = content.getResources().getDisplayMetrics().density;
      return (int) (pxValus / scale + 0.5f);
      }

    /**

    • 将px转化成sp,保证文字大小不变。
    • @param content
    • @param pxValus
    • @return
      */
      public static int px2sp(Context content, float pxValus) {
      final float fontScale = content.getResources().getDisplayMetrics().scaledDensity;
      return (int) (pxValus / fontScale + 0.5f);
      }

    /**

    • 将sp转化成px,保证文字大小不变。
    • @param content
    • @param pxValus
    • @return
      */
      public static int sp2px(Context content, float pxValus) {
      final float fontScale = content.getResources().getDisplayMetrics().scaledDensity;
      return (int) (pxValus / fontScale + 0.5f);
      }
      }

其实的density就是前面所说的换算比例,这里使用的是公式换算方法进行转换,同时系统也提供了TypedValue帮助我们转换
/**
* dp2px
* @param dp
* @return
*/
protected int dp2px(int dp){
return (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,dp,getResources().getDisplayMetrics());
}

/**
 * sp2px
 * @param dp
 * @return
 */
protected int sp2px(int sp){
    return (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP,sp,getResources().getDisplayMetrics());
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 主要积累一些开发中比较 常用的工具类,部分借鉴于网络,主要来源于平时开发因需求而生的小工具类 13、ArithUt...
    大鸭梨leepear阅读 694评论 0 1
  • 1、拨打电话 public static void call(Context context, String ph...
    jxuanwu阅读 1,250评论 0 2
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,993评论 19 139
  • 在 Android 系统中,总有那么一些鲜为人知的 API 能够减少我们很多零碎的工作量。于是,就想凭着一些经验,...
    Pin_ZL阅读 1,434评论 0 5
  • 苏州当地人说:要么阳春五月要么深秋十一月来苏州最好,十月是个尴尬的季节,花已谢 ,枫叶却未黄,绿也不那么翠了,...
    牧心3320阅读 122评论 1 1