Android机型屏幕尺寸碎片化:5寸、5.5寸、6寸等等
Android屏幕分辨率碎片化:320x480、480x800、720x1280、1080x1920
本文的三种适配
自定义像素适配
屏幕百分比适配
屏幕像素密度(修改系统屏幕的像素密度)
自定义像素适配
主要流程(自定义ViewGroup,在ViewGroup的onMeasure中重新去更改子View的宽高,padding,margin)
1,写一个util,在util中定义ui设计的尺寸
2,获取系统的宽高,计算出与设计稿的缩放比例
3,自定义ViewGroup,重写onMeasure,遍历子控件,计算新的宽高(记得打上Flag,因为ViewGroup可能会多次测量)
4,在xml布局文件中直接写入设计稿中的尺寸
屏幕百分比适配
1,先继承RelativeLayout
2,attrs中写好自定义的属性,如宽高的百分比,单位
3,定义一个静态内部类新LayoutParams继承RelativeLayout.LayoutParams,重新去解析我们新加的属性
4,重写generateLayoutParams(AttributeSet attrs),将我们自己新的LayoutParams返回
4,在onmearsure中去获取,先获取父容器的宽高,循环子控件,然后去得到子控件的布局属性,重新计算宽高
屏幕像素密度
使用修改屏幕的Density,ScaleDensity,DensityDpi
1,在utils中指定一个设计尺寸宽高(1920*1080)
2,根据Application获取当前屏幕的宽高,像素密度,缩放比例
3,通过设计尺寸的宽高与当前屏幕的宽高,计算出缩放比例targetDensity,通过targetDensity计算出ScaleDensity,DensityDpi=targetDensity*160;
4,通过activity去获取DisplayMetrics,然后修改Density,ScaleDensity,DensityDpi
5,在BaseAcrivity中去调用utils,统一的修改
注:可能会在系统出修改字体的大小,需要添加字体大小的监听,然后去再去修改ScaleDensity