Android布局万能适配思路

思路:了解View的绘制流程

View中的onMeasure方法,但是真正实现测量的方法是measure(int widthMeasureSpec, int heightMeasureSpec),在下图执行了onMeasure方法
image.png

View在更新布局的时候调用的是requestLayout方法
image.png

进入ViewRootImpl中找到performTraversals()方法
image.png
image.png

在performMeasure中可以看到调用了View.measure方法
image.png

那么在LayoutInflater中又做了哪些事?可以找到rInflate(XmlPullParser parser, View parent, Context context, AttributeSet attrs, boolean finishInflate)这里进行了xml的解析同时调用了ViewGroup的generateLayoutParams()方法,并且传入参数attrs这里是关键,源码真的是很多直接上代码~

首先自定义一个在xml中通用的rootView例如RelativeLayout重写onMeasure和generateLayoutParams方法如图
image.png
image.png

在UIUtils中需要得到缩放值,如果UI是以1080为标准,那么将当前设备分辨率与1080得到一个比例,用来和宽高等数值进行计算,这样就实现等比缩放了,当然要实现所有适配还需要比如padding、textsize等等...

github:https://github.com/389987790/ScreenAdapter

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。