自己去下吧:
http://fontdownloadatozcom/font,11552,young-love-eshtml
这个不是很绕~~~:
http://fontdownloadatozcom/font,5540,old-scripthtml
相信你懂得~嗯~
连接断了。。。自己复制一下吧…… 不知道百度怎么搞的,看见逗号就断连接……
通过设置字号,同步改变全局的字体。
长文干货,建议点赞收藏。
实现方式有多种:
先看效果图,在设置页面,通过设置字体的类型,然后保存下来,同时刷新binding监听,更改所有显示的textview字体大小。
首先新建字体设置工具类。
下面是字体模型截图,类似方案1中的字体主题,分别对应设置页面的标准字体,大号字体,特大字体,可随意扩展。
自定义binding方法中通过livedata注册了一个监听,所以跟方案3类似,实则是每一个textview都存在一个监听,而 livedata可以绑定生命周期,自动创建跟销毁监听,避免内存泄漏 。
在xml中绑定设置的方法。
当布局创建时,会自动执行binding方法。
binding方法中会根据xml里的字体大小类型执行工具类中的getFontVo方法。
getFontVo方法回去读取缓存在本地的字体类型,等于主题类型,从而读取到具体的模型数据,拿到数据设置更新。
而binding方法中的监听,绑定了当前的生命周期,所以当页面销毁或回收时会自动解除监听。
只要xml中设置了自定义的binding属性,就能同步修改更新,不影响原本的设置,如丝滑般柔顺。
当然,因为是基于binding,所以项目得基于databinding才行。
因为我后面接触过的项目都是databinding,并且也是主流。
如果不是就推荐方案3了,通过自定义view实现,大致流程也差不多。
码字不易,喜欢就赏个赞吧。
因为是binding,所以有时候在无法满足需求的情况下可以额外扩展方法。
比如tablayout,实现一个选中字体放大的效果。
很简单,扩展了两个属性,一个是否选中,一个是增量。
只需要在xml中动态配置一下,然后通过逻辑控制就能同步设置。
只要把工具类封装好了,后续只需要设置binding属性就行。
在需求跟扩展以及刷新效果来说,这个方案是很不错的。
欢迎分享,转载请注明来源:浪漫分享网
评论列表(0条)