分辨率,屏幕尺寸,屏幕密度,dp,px,sp

我们在做UI时候经常遇到这几个概念,但是就是不知道他们之间的关系,这篇文章将会解惑。

像素:显示图像的基本单元,单位px

分辨率:是纵横向上的像素点数,单位是px,比如1920*1080说的是纵向有1920个像素点,横向有1080个像素点。

屏幕尺寸:是手机屏幕对角线的长度,单位为英寸。
在这里插入图片描述

屏幕像素密度:每单位的像素的点数,简称PPI(Pixels Per Inch),单位dpi(Dots Per Inch)。

上述的关系为:
屏幕的像素密度=√(分辨率高² + 分辨率宽²)÷ 屏幕尺寸
例如:
在这里插入图片描述

那我们Android中的dp和sp与上面的概念有什么关系呢?

dp:Android引入了密度无关像素 (dp) 作为度量单位来设计界面。dp 是一个虚拟像素单位,1 dp 约等于中密度屏幕(160dpi;“基准”密度)上的 1 像素。对于其他每个密度,Android 会将此值转换为相应的实际像素数。
px = dp * (dpi(屏幕的像素密度) / 160)

sp:为缩放后的字体的单位,我们不能在布局中使用它,我们通常在设置字体大小中使用。
px = sp(scaleDpi)*

代码的位置为:

public class TypedValue {
 	public static float applyDimension(int unit, float value,
                                       DisplayMetrics metrics) {
        switch (unit) {
        case COMPLEX_UNIT_PX:
            return value;
        case COMPLEX_UNIT_DIP:
            return value * metrics.density;
        case COMPLEX_UNIT_SP:
            return value * metrics.scaledDensity;
        case COMPLEX_UNIT_PT:
            return value * metrics.xdpi * (1.0f/72);
        case COMPLEX_UNIT_IN:
            return value * metrics.xdpi;
        case COMPLEX_UNIT_MM:
            return value * metrics.xdpi * (1.0f/25.4f);
        }
        return 0;
    }
}

我们适配图片时候常常会涉及到xxhdrawable的素材又是什么意思呢?
见如下图:
在这里插入图片描述
参考资料:
今日头条适配方案
支持不同的像素密度

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值