屏幕适配 Gradle抽取
> 屏幕适配
1.平时写布局注意的问题
2.全局适配的方案
3.实际开发中遇到的一些特殊适配问题
因为Android技术是开元的,碎片化问题比较严重,所以应用的对不同分辨率的手机进行适配,那我在平时开发过程中,首先布局编写时,通过权重,匹配屏幕或包裹内容来实现View的自适应,当然好多view的宽高是切图中规定死的,那么对于这些写死的宽高,在不同设备中就会出现比例拉伸的情况,所以以前项目当中,一般会通过最小宽高适配来实现不同机型的屏幕适配.
原理介绍:
其实适配的主要问题就是分辨率吧不同,尺寸不同,而设备的像素密度和分辨率,尺寸息息相关,也就是说px在不同机型上转化的dp值是不同的,如果我们不做适配,当dp在不同设备上值是不一样的时候,那自然就会出现显示长短不一样效果,所以我通过studio自带的一个插件screenMatch,来生成项目上使用到的所有版本dp值,这样当不同设备在渲染尺寸的时候,会自动从和自己最为接近的最小宽度中,读取对应比例的dp值,读取对应比例的dp值,这样最大会的实现了屏幕适配的效果
默认生成的dimens可以适配大部分设备,但是如果尺寸比较特殊的设备需要我们自己添加适配值,比如以前做过一个LED显示屏,它的分辨率和手机差不多,但是尺寸的话要比手机要大得多,所以默认生成的dimens并没有很好地实现适配的效果,后来我通过就算这个LED显示屏的最小宽度,然后在screenMatchProPerties这个文件中,将新计算的最小宽度进行添加,然后重新生成所有适配的dimension,很好的解决; 这款特殊设备的适配
今日头条适配是我以设计图的宽高进行设配的,适配最终是改变系统的density实现的,他的优点是使用成本低,侵入性第,修改头一次项目所有地方都会适配,无性能耗损,但\缺点也比较明显,只需要修改一次density,项目中所有地方都会适配,这个看似减少了很多操作.但是实际上反应了一个缺点,那就是只能一刀切的将整个项目进行适配,但是适配范围是可不控的,这个方案依赖于设计图尺寸,但是项目中的系统控制,三方控制等非我们项目自身设计的控件,他们的设计图尺寸并不会和我们项目自身的完全一致
autosize是基于今日头条适配方案,他很大程度上解决了今日头条适配方案的两个缺点,可以对activity,fragment进行取消适配.而且使用比较简单.,添加一行依赖就能适配整个项目,而且可以设置副单位.支持pt之类的单位
Gradle抽取
1.如果一个项目当中存在多个模块,当跟开以来版本号的时候,便于修改
2.保证了多个模块的版本一致,减少了冲突发生的可能