Android中dp,px,sp浅谈

来源:互联网 发布:淘宝荣耀官方旗舰店 编辑:程序博客网 时间:2024/05/19 01:10

前言:

新的项目来了。。。但是博客还是要继续写的。

今天来聊聊dp,px,sp。


一 简介:


首先来看一下它们的简介。


dp:这是一个与密度无关的像素,这是一个基于屏幕物理密度的抽象单位,这是我在实际开发中用的最多的


px:即像素,1PX代表屏幕上的一个物理像素点。但是不同分辨率的屏幕拥有的像素点数量是不同的。这就造成了一个很严重的问题,同样大小的图片在不同手机显示的实


际大小可能不同,要用到px的情况是需要画1像素表格线或阴影的时候。


sp:这个啥意思,可伸缩像素的意思,采用和dp同样的设计理念,解决了文字大小适配问题,sp是在文字中采用。


二 转换:


package myview.csdn.com.tool;import android.content.Context;/** * Created by Administrator on 2017/6/20. */public class Tool {    /**     * 将px值转换为dip或dp值,保证尺寸大小不变     *     * @param pxValue     * @param     *            (DisplayMetrics类中属性density)     * @return     */    public static int px2dip(Context context, float pxValue) {        final float scale = context.getResources().getDisplayMetrics().density;        return (int) (pxValue / scale + 0.5f);    }    /**     * 将dip或dp值转换为px值,保证尺寸大小不变     *     * @param dipValue     * @param     *            (DisplayMetrics类中属性density)     * @return     */    public static int dip2px(Context context, float dipValue) {        final float scale = context.getResources().getDisplayMetrics().density;        return (int) (dipValue * scale + 0.5f);    }    /**     * 将px值转换为sp值,保证文字大小不变     *     * @param pxValue     * @param     *            (DisplayMetrics类中属性scaledDensity)     * @return     */    public static int px2sp(Context context, float pxValue) {        final float fontScale = context.getResources().getDisplayMetrics().scaledDensity;        return (int) (pxValue / fontScale + 0.5f);    }    /**     * 将sp值转换为px值,保证文字大小不变     *     * @param spValue     * @param      *            (DisplayMetrics类中属性scaledDensity)     * @return     */    public static int sp2px(Context context, float spValue) {        final float fontScale = context.getResources().getDisplayMetrics().scaledDensity;        return (int) (spValue * fontScale + 0.5f);    }}



原创粉丝点击