手机适配主要包括三个方面:语言适配、屏幕适配、SDK平台的适配。
一、1.屏幕尺寸
屏幕尺寸屏幕尺寸指屏幕的对角线的长度,单位是英寸,1英寸=2.54厘米比如常见的屏幕尺寸有:2.4、2.8、3.5、3.7、4.2、4.7、5.0、5.5、6.0等
- 屏幕分辨率
屏幕分辨率是指在横纵方向上的像素点数,单位是px,1px=1个像素点。一般以横向像素数纵向像素数 表示,如19201080。 - 屏幕像素密度及密度比值
屏幕像素密度是指每英寸上的像素点数,单位是dpi,即“dot per inch”的缩写。屏幕像素密度与屏幕尺寸和屏幕分辨率有关,在单一变化条件下,屏幕尺寸越小、分辨率越高,像素密度越大,反之越小。一英寸里面有160个像素,这个屏幕的像素密度就是160dpi。 - dp、dip、sp、px
px:像素。我们应该是比较熟悉的,前面的分辨率就是用的像素为单位,大多数情况下,比如UI设计、Android原生API都会以px作为统一的计量单位,像是获取屏幕宽高等。
dip和dp是一个意思,都是Density Independent Pixels的缩写,即密度无关像素,上面我们说过,dpi是屏幕像素密度,假如一英寸里面有160个像素,这个屏幕的像素密度就是160dpi,那么在这种情况下,dp和px如何换算呢?在Android中,规定以160dpi为基准,1dip=1px,如果密度是320dpi,则1dip=2px,以此类推。px =320dpi / 160dpi * 10dp = 20px
sp,即scale-independent pixels,与dp类似,但是可以根据文字大小首选项进行放缩,是设置字体大小的御用单位。
二、机型适配的解决方案
屏幕适配(相对布局、尺寸限定符、最小宽度限定符、屏幕方向限定符、自动拉伸位图)
支持所有屏幕尺寸
1、 使用wrap_content、match_parent
2、 使用线性布局,并使用weight属性。
3、 使用相对布局。
尺寸限定符
屏幕方向限定符
最小宽度限定符
自动拉伸位图
三、版本适配
版本适配方式一:
values-v14代表在API 14+的设备上,用该目录下的styles.xml代替res/values/styles.xml
values-v21代表在API 21+的设备上,用该目录下的styles.xml代替res/values/styles.xml
其中API 14+代表android 4.0 +
其中API 21+代表android 5.0 +
版本适配方式二:
动态java控制:
对于 target sdk 对不同机器的兼容应该使用以下策略:
1.应该尽量使用较高版本的sdk去编译,在app的build.gradle中设置:
2.在使用相关的sdk api时,应该针对明白对不同sdk去处理