博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
给你一个全自动的屏幕适配方案(基于SW方案)二 —— Calces.Screen插件拓展功能升级...
阅读量:6578 次
发布时间:2019-06-24

本文共 1903 字,大约阅读时间需要 6 分钟。

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

前言

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

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

项目地址:

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

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就可以了。代码如下:

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配置待转换的图片资源文件夹的名字。具体配置方法如下:

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

扫一扫二维码可以关注我:

转载地址:http://iogjo.baihongyu.com/

你可能感兴趣的文章
如何运行vue项目(维护他人的项目)
查看>>
Spring之RestTemplate中级使用篇
查看>>
Python3入门机器学习(六)- 梯度下降法
查看>>
Android BroadcastReceiver使用详解
查看>>
Java并发(7)- 你真的了解 ReentrantReadWriteLock 吗?
查看>>
Android中的MVC MVP MVVM框架模式
查看>>
Android中Application和Activity的Context对象的区别
查看>>
iOS 未越狱的设备真机调试,查看保存在沙盒里的数据
查看>>
手把手教你如何新建scrapy爬虫框架的第一个项目(下)
查看>>
一直想创业做产品的你,是否像Comfy Read创始人那样起初是为了想要解决自己的问题而开发一个产品的呢?...
查看>>
Docker 简单入门笔记
查看>>
关于如何跳出循环?
查看>>
存在即有理---线性规划中的对偶
查看>>
iOS的看门狗(watchdog)机制
查看>>
iOS-automaticallyAdjustsScrollViewInsets和translucent
查看>>
二叉树的创建及遍历(JavaScript实现)
查看>>
Java并发系列 — 阻塞队列(BlockingQueue)
查看>>
iOS逆向之旅 — 总纲
查看>>
开源app之MyHearts
查看>>
iOS SVN忽略文件设置
查看>>