Android屏幕适配攻略

前言

随着Android不断的迭代更新,各大厂商生产的Android设备也是各不相同,这也是大家经常听到的碎片化,那么这么多设备,同一个App使用单独一种资源是满足不了当前碎片化很严重的Android设备。下面这张图是表明Android碎片化问题的一张经典图片:


碎片化

图是Android屏幕尺寸的示意图,在这张图里面,蓝色矩形的大小代表不同尺寸,颜色深浅则代表所占百分比的大小。所以在App开发中,屏幕适配是一个不可或缺的工作。今天就来讲讲屏幕适配中那些傻傻分不清楚的地方。

屏幕尺寸、屏幕分辨率、屏幕像素密度

这三个名词,想必大家都有听过,那么分别代表着什么呢?

屏幕尺寸

指的是设备屏幕对角线的长度。1英寸=2.54cm


屏幕尺寸

屏幕分辨率

屏幕分辨率是指在横纵向上的像素点数,单位是px,1px=1个像素点。一般以纵向像素横向像素,如19601080。

屏幕像素密度

屏幕像素密度是指每英寸上的像素点数,单位是dpi,即“dot per inch”的缩写。屏幕像素密度与屏幕尺寸和屏幕分辨率有关,在单一变化条件下,屏幕尺寸越小、分辨率越高,像素密度越大,反之越小。

dp、dip、dpi、sp、px傻傻分不清楚

dp和dip是一个意思,都是Density Independent Pixels的缩写,即密度无关像素,上面我们说过,dpi是屏幕像素密度,假如一英寸里面有160个像素,这个屏幕的像素密度就是160dpi,那么在这种情况下,dp和px如何换算呢?在Android中,规定以160dpi为基准,1dip=1px,如果密度是320dpi,则1dip=2px,以此类推。在设备中通过改变设置应用中的display大小可以改变
px是比较常见的,屏幕分辨率就是用的像素为单位,大多数情况下,比如UI设计、Android原生API都会以px作为统一的计量单位,像是获取屏幕宽高等。
sp,即scale-independent pixels,与dp类似,但是可以根据文字大小首选项进行放缩,用来设置字体大小。

ldpi、mdpi、hdpi、xhdpi、xxdpi

Android在考虑到了碎片话问题,给开发者们定义了集中常用的资源使用尺寸区间:ldpi、mdpi、hdpi、xhdpi、xxdpi,它们分别对应了以下范围:


image.png

系统根据当前设备的状态,选择对应的资源文件夹中的文件。

sw**dp一种更为精确的适配方案

随着Android设备的增多,碎片话问题越发严重,近几年的全面屏更是让App开发者头疼不已,Google定义的资源范围已经不能满足日常需要,这时候一个更为精确的适配方式出现了,大家在开发过程中经常看到res文件夹下有以下文件夹:value-sw360dp,sw: shortest width,最短的宽度。那么这个sw**dp中的数字如何计算出来的呢?google是这样定义的:sw *160/dpi,其中dpi其实是人为在Android/device/softwinner/astar-common/astar-y3.mk中设定的,也可以通过 adb shell getprop ro.sf.lcd_density 获得。
以上就是Android屏幕适配的常用总结。

本文已独家授权公众号ApeClub,更多好文,请关注公众号ApeClub。

你可能感兴趣的:(Android屏幕适配攻略)