Android布局文件中单位的使用总结

Android布局文件中单位的使用总结

 

 

为了适配更多的手机,需要学习了解一下android布局当中的单位。

 

布局文件中可以使用的单位有:

px:是屏幕的像素点

in:英寸

mm:毫米

pt:磅,1/72 英寸

dp:一个基于density的抽象单位,如果一个160dpi的屏幕,1dp=1px

dip:等同于dp

sp:同dp相似,但还会根据用户的字体大小偏好来缩放。

 

建议使用sp作为文本的单位,其它用dipdp

 

这里介绍一下dpdip的一些理解。(有点难度的,可以不看)

首先介绍一下Android的屏幕密度是以160为基准的,为基准就是以160为基底。

屏幕密度(densityDpi)160,,是将一英寸分为160,,每一份是1像素。 如果屏幕密度(densityDpi)240,,是将一英寸分为240,,每一份是1像素。

1英寸/160(机器x)  =  1英寸/240(机器y)  =  1px


打个比方, 一个三英寸的显示屏幕的机器,如果屏幕密度(densityDpi)160,这时候我们就说屏幕的密度比为1.0 画一条160dip160px的线条两个都是1英寸

可如果还是三英寸的屏幕,如果屏幕密度(densityDpi)变为320 即密度比(density)2.0时,现在大家理解了Android的屏幕密度是以160为基准的,1英寸有320像素了,

 此时160px显示就是半英寸,160dip显示还是1英寸,因为 1dip = 1px * density 。这就是屏幕密度比和px以及dipdp)的关系。

 

可是你有没有注意到,同样宽的屏幕比如3英寸如果density 1.0的话分辨率就是480dip*x480px,*x 如果还是3英寸的, density 1.5的话 , 

分辨率就是480*1.5 = 720px*x 480dip*x(这里的x代表屏幕的高度). 如果同样是240dip,在两款机器上显示都是一半的长度,这样就保证了比例。 

这样的话如果是480分辨率和720分辨率的话,可以采用同一个布局文件了。

 

但是,我见过的机器只有320*240(0.75) , 480*320(1.0) , 800*480(1.5), 854*480(1.5) , 如果是480  800 两个版本同一条线480dip , 480显示全屏

800则显示 480 / (800 / 1.5)   . 其中800/1.5是屏幕的总dip . 我们平时说的分辨率都是以像素px为单位的.  


由此可见就算是用dip, 也不能保证不同分辨率的机器的布局比例完全一样.  但还是有好处的因为如果是用px的话有些时候一些布局直接跑到了屏幕外边,

 调试起来很麻烦

还有, google代码里边所用的单位都是以px为默认单位的。 

apk的资源包中,当屏幕density=240时使用hdpi标签的资源

当屏幕density=160时,使用mdpi标签的资源

当屏幕density=120时,使用ldpi标签的资源。

在每英寸160点的显示器上,1dp = 1px

 

 

 

 

一般的,知道单位的应用就可以了:

设置布局文件的大小、距离一般用dp

设置文本字体的大小一般用sp

 

如:

   <RelativeLayout

        android:layout_width="80dp"

        android:layout_height="80dp"

        android:background="#1000" >

 

        <TextView

            android:layout_width="20dp"

            android:layout_height="20dp"

            android:layout_alignParentBottom="true"

            android:layout_alignParentRight="true"

            android:padding="20dp"

            android:text="0000"

            android:textSize="30sp" />

    </RelativeLayout>

 

布局文件设计中你用上面提到的任意单位,都不会报错,但是有的会显示警告

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

峥嵘life

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值