Android UI适配(dp,dpi,px介绍)

来源:互联网 发布:lol韩服网络错误 编辑:程序博客网 时间:2024/06/06 14:08

   简单的介绍Android的适配怎么做的。

   先上一个图:

    

图中的屏幕尺寸为宽X英寸,长为Y英寸,则对角线长为Z,响应的横向的像素点为M,纵向的像素为N,对角线的像素点为L。

        L/Z的值就是手机屏幕的像素密度。单位是dpi (dot per inch),每英寸的像素的点数。为什么要用对角线而不是长或者宽的像素密度,因为两者很可能不一样,要做到兼顾,去对角线的像素密度是合理的。

         那么dp是怎么来的?是谷歌为了适配发明的单位。

         先来个设想,如果有两个手机物理尺寸都宽100英寸,但是手机A宽有1000个像素点,手机B宽只有100个像素。如果这个时候一条线设置100个px的长度,那么在手机A上就只有十分之一的手机宽度,而在手机B上却有整个手机宽。

         这个dp单位就是为了这个时候发送的,dp叫做设备像素无关单位。恩,是与像素无关,与像素密度有关。

          谷歌规定在160dpi的手机上面,1dp=1px。240dpi 则,1dp = 1.5px。同理往下推,1dp = 当前手机像素密度/160 px 。这样换算有什么好处?这样同样的dp值在不同的手机上看的物理长度差不多,就不会出现在一个手机上看起来很长,一个手机上看起来很短的情况。看下表,是android手机常见的配置。

        

        在实际的项目中也要使用dp做单位,而不是px。

       同时值得提到的是,一般的UI设计师会按照XXhdpi的比例来设计UI,这个时候拿到设计师的UI像素尺寸后除以三就可以了。而对应的资源文件应该放在相应的drawable文件下,android studio是放在相对应mimap或者drawable文件下。关系一定要对应,不能瞎放,xxhdpi的图片要放在xxhdpi-mimap的文件夹下。

 原声的DP单位做到了,不同的像素点在不同的手机上的尺寸看起来差不多长,但是这只解决一部分问题,因为有的手机的屏幕拿宽来举例,其总的DP就不一样。也就是在适配上还是有些区别的,最好的办法是百分比。详细下次分晓。


0 0
原创粉丝点击