Android的基本屏幕适配


基本解决方案

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布局文件中直接写入设计稿中的尺寸

获取宽高缩放比例


在ViewGroup中更改子View

    屏幕百分比适配

1,先继承RelativeLayout

2,attrs中写好自定义的属性,如宽高的百分比,单位

3,定义一个静态内部类新LayoutParams继承RelativeLayout.LayoutParams,重新去解析我们新加的属性

4,重写generateLayoutParams(AttributeSet attrs),将我们自己新的LayoutParams返回

4,在onmearsure中去获取,先获取父容器的宽高,循环子控件,然后去得到子控件的布局属性,重新计算宽高

ViewGroup中更改子View宽高

屏幕像素密度

使用修改屏幕的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


你可能感兴趣的:(Android的基本屏幕适配)