给你一个全自动的屏幕适配方案(基于SW方案)二 —— Calces.Screen插件拓展功能升级


Material Render Phone

如果不了解Calces.screen插件的用法或者想深入了解sw( Smallest Width) 屏幕适配方案的话,可以阅读上一篇文章:

给你一个全自动的屏幕适配方案(基于SW方案)!—— 解放你和UI的双手

前言

前段时间,笔者开发了一个名为Calces.Screen的全自动屏幕适配插件,这个插件是基于官方推荐的屏幕适配方案实现的。它的核心原理就是通过配置限定符来设置需要适配的屏幕的最少宽度来实现屏幕适配。而该插件的作用就是通过配置把设计稿的标尺自动生成你需要适配的屏幕dimension资源文件来实现屏幕适配。并且插件还提供了资源图片自动设配方案,所以在开发的时候,我们只需要提供一套高清的图片资源即可。插件会根据配置自动帮你生成你需要的分辨率的图片。而本插件推出后,有部分使用者反应了一些问题,主要是Screen限制了资源文件的名字为dimens.xml,并且无法图片缩放的时候只支持缩放mipmap文件夹下的图片,所以这次更新主要是为了解决这两个问题的。

如果不了解Calces插件的话,可以登陆Github查看项目的介绍。

项目地址:calces-gradle-plugin

如果想了解Calces是如何实现自动组件化的话,可以阅读这篇文章:

Gradle自动实现Android组件化模块构建

你的Star是我坚持的动力👍

Screen插件指定dimensions的文件名

Screen插件在1.2.42之前的版本里面,限制了dimensions文件的名字为dimens.xml的,但是不是所有项目中的dimensions文件都命名为dimens.xml的。例如,我们把dimensions文件命名为dimen.xml,如果我们用1.2.42之前版本的Screen插件来生成适配sw dimensions文件的话,则会适配失败。在1.2.42版本的话则解决了这个问题,我们只需要把dimensFileName设置为dimens就可以了。代码如下:

1
2
3
4
5
6
7
8
9
10
11
screen{

dimens{
dimensFileName "dimen"
designPx 375
smallesWidths 320,375,411,900
scale BigDecimal.ROUND_UP
auto true
}

}

在1.2.42的版本中,dimensFileName的默认值是dimens,所以如果dimensions的名字为dimens的话,则可以不设置该值。配置完毕后,重新build一遍项目,就会根据配置生成values-sw320dp、values-sw375dp、values-sw411dp、values-sw900dp的屏幕适配资源文件了。

Screen插件指定资源文件夹的名字

在1.2.42之前的版本中,Screen插件的资源文件夹默认是mipmap,并且没有提供配置方法。但是有一些老项目中的图片资源是保存在drawable中的,所以Screen插件会和一些比较老的项目产生不兼容的问题。所以在新版本中,Screen提供了配置方法,配置方法也非常简单。在新版本的mipmap的配置项中提供了folder配置,可以通过floder配置待转换的图片资源文件夹的名字。具体配置方法如下:

1
2
3
4
5
6
7
8
9

screen{
mipmap{
folder "drawable"
designDensity "xxxhdpi"
mipmapDensity 'xxhdpi','xhdpi','hdpi'
auto true
}
}

十分简单,配置完毕后,重新build一下就可以生成需要密度的图片资源了。如上面的例子中,会生成drawable-xxhdpi、drawable-xhdpi、drawable-hdpi文件夹,转换后的图片就会保存在这里。

小结

这篇博客非常简单,主要是介绍Calces.Screen插件的重要更新。上个版本的Calces.Screen插件推出后收到反馈比较多的问题。因为笔者在开发Calces.Screen插件的时候,是基于比较新的Android SDK进行开发的。没有考虑对旧版本的项目的兼容,在这里非常感谢提出意见的读者。如果大家有什么想法的话,可以对Calces项目提交pull request,又或者直接发邮件给我也是可以的。

在这里在提醒一下大家,如果希望进一步了解Calces插件或者你对Android自动化构建有什么想法的话,可以去Github上提交pull request,或者发邮件联系我。这里也非常欢迎大家参与到Calces的开发中。如果觉得这个插件好用的话,欢迎点下star

你的Star是我坚持的动力👍

Tang wechat
如果希望及时收到更新,请长按或扫描上方微信二维码
你的支持,是我坚持的动力👍