Anroid中尺寸单位详解

引言

Android系统由于是开源的,因此不同的厂商开发出自己的硬件去使用Android系统,因此市面上就有很多种尺寸的屏幕,因此作为软件开发人员,就必须得掌握Android中各种不同的尺寸单位,以及它们之间的关系。所以本篇博客,将深入学习一下这方面的知识。

Android中有哪些尺寸单位?

android中的尺寸(dimension)主要包括:dp,sp,pt,px,mm,in;
可以点击看官网说法

dp

dp也即dip(Density-independent Pixels),是一种与屏幕密度无关的尺寸单位,当屏幕密度是160dpi时,1dp=1px。当运行在高dpi的屏幕上时,dp就会按比例放大,当运行在低dpi的屏幕上时,dp就会被按比例缩小。因此dp是一种简单的解决view在不同大小屏幕上显示的问题的解决方案。

sp

sp(Scale-independent Pixels)和dp是比较相似的,但是它会随着用户对系统字体大小的设置进行比例缩放,换句话说,它能够跟随用户系统字体大小变化。所以它更加适合做为字体大小的单位。

pt

pt(Point)是一个基于屏幕大小的物理尺寸,1pt等于1/72英寸(inch)。(不常用)

px

px(Pixels)相当于实际屏幕的像素,由于不同屏幕的像素数差异比较大,因此这个单位不被推荐用于尺寸单位,

mm

mm(Millimeters)即毫米,这是一个基于屏幕物理尺寸的单位。(不常用)

in

in(Inches)即英寸,也是一个基于屏幕物理尺寸的单位。(不常用)

各个尺寸之间的转换

dp转px

public static int dip2px(Context context,float dipValue){
        final float scale = context.getResources().getDisplayMetrics().density;
        return (int) (dipValue*scale+ 0.5f);
    }

px转dp

  public static int px2dip(Context context,float px){
        final float scale = context.getResources().getDisplayMetrics().density;
        return (int)(px/scale +0.5f);
    }

sp转px

  public static int sp2px(Context context,float spValue){
        final float fontScale = context.getResources().getDisplayMetrics().scaledDensity;
        return (int)(spValue*fontScale+0.5f);
    }

px转sp

 public static int px2sp(Context context,float pxValue){
        final float fontScale = context.getResources().getDisplayMetrics().scaledDensity;
        return (int)(pxValue/fontScale+0.5f);
    }

mm转in

 public static double mm2in(double mmValue){
        return mmValue*(10/254);
    }

in转mm

public static double in2mm(double inValue){
        return inValue*(25.4);
    }

收藏的字体大小对照表

        <!--OSChina APP-->
    <dimen name="text_size_32">32.0dip</dimen>
    <dimen name="text_size_31">31.0dip</dimen>
    <dimen name="text_size_30">30.0dip</dimen>
    <dimen name="text_size_29">29.0dip</dimen>
    <dimen name="text_size_28">28.0dip</dimen>
    <dimen name="text_size_27">27.0dip</dimen>
    <dimen name="text_size_26">26.0dip</dimen>
    <dimen name="text_size_25">25.0dip</dimen>
    <dimen name="text_size_24">24.0dip</dimen>
    <dimen name="text_size_23">23.0dip</dimen>
    <dimen name="text_size_22">22.0dip</dimen>
    <dimen name="text_size_21">21.0dip</dimen>
    <dimen name="text_size_20">20.0dip</dimen>
    <dimen name="text_size_19">19.0dip</dimen>
    <dimen name="text_size_18">18.0dip</dimen>
    <dimen name="text_size_17">17.0dip</dimen>
    <dimen name="text_size_16">16.0dip</dimen>
    <dimen name="text_size_15">15.0dip</dimen>
    <dimen name="text_size_14">14.0dip</dimen>
    <dimen name="text_size_13">13.0dip</dimen>
    <dimen name="text_size_12">12.0dip</dimen>
    <dimen name="text_size_11">11.0dip</dimen>
    <dimen name="text_size_10">10.0dip</dimen>
    <dimen name="text_size_9">9.0dip</dimen>
    <dimen name="text_size_8">8.0dip</dimen>
    <dimen name="text_size_7">7.0dip</dimen>

PS:为什么用dip,因为SP会随随系统字体大小变动,布局可能就不太好看或者乱掉。

Android系统中常用的字体大小

这里写图片描述

总结

dp和sp是Android中最常用的两个单位,dp常常被被用于View大小的单位,sp常被用于字体大小的单位,有时候dp也会被用于字体大小单位,看具体需求决定。

参考文章

Android系统字体规范与应用探索
Android官网尺寸单位简介
Android:布局单位转换

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值