美文网首页
共享一个迅速实现安卓图文混排的工具类

共享一个迅速实现安卓图文混排的工具类

作者: 刘晨光_3bce | 来源:发表于2020-01-25 16:45 被阅读0次

年前写新功能的时候遇到了一个特殊的TextView图文混排需求,使用安卓原生实现起来相对麻烦,网上也找不到现成的工具类,于是就自己钻研了一套实现方案在这里共享给大家,转载请注明出处。

工具实现了图片和文字高度一致对齐,同时也解决了TextView设置行间距导致图片下沉等控件级别的bug。Demo效果如下图(代码链接会放在文末),由于工具类的核心是使用 ImageGetter 来实现的,因此这个工具类也能支持网络图片的图文混排:

竖屏状态 横屏状态

如上图未被解析的文案所示,工具类可以识别两种占位符:一种是自定义的本地图片占位符(需要开发者自行定义占位符内容和占位符所对应的本地图片id);另一种是直接插入 ImageGetter 可直接识别的 <img src=""/> 标签,让 ImageGetter 直接下载网络图片并展示在TextView之中。

本地图片占位符的定义位置

至于工具类如何使用,主要通过三行代码就可以实现图文混排:

工具类使用示例

另外,文案中图片的高度也可以通过TextView自身的属性进行微调:当 TextView 的属性includeFontPadding 设置为 false 的时候,文案的图片高度会稍微缩小,反之则会增加。当我们的图文混排工具类运用到数字或英文字母与图片混排的时候,我们可以将 includeFontPadding 置为 false,让图片的高度略微变小一些和数字高度对齐,确保图文混排样式的整体美观。

虽然工具类已经尽善尽美,但目前还有两个遗留的问题:

1、如果文字行间距过大(例如行间距在15dp以上)文字中的图片会出现模糊现象,主要原因还是图片 DrawBitmap 的时候没有限定宽高的原因,导致最终绘制上去的图片等比例拉伸变糊了,这个问题后续会优化。

2、如果图文混排中包含网络高清大图,并且 TextView 又设置了行间距,那么此文案在某个设备上首次展示的时候就需要花费较长的时间。这个问题优化起来比较费劲。因为带有行间距的TextView 直接进行图文混排会出现图片下沉的 bug,为了解决这个问题,就需要先将文案中所有的图片下载下来进行第一次测量,确定每个图片处于哪一行,对图片高度进行正确的处理之后才能展示给用户,如果此时用户网络不佳,TextView 文案就可能长时间处于空白状态。

最后附上Demo的github链接,希望对遇到相关需求的开发者有所帮助:https://github.com/liuchenguangqnm/richTextTool/tree/master

相关文章

  • 共享一个迅速实现安卓图文混排的工具类

    年前写新功能的时候遇到了一个特殊的TextView图文混排需求,使用安卓原生实现起来相对麻烦,网上也找不到现成的工...

  • 50 【视频讲解】日历工具练习(安卓版)

    本节:安卓手机上的日历工具用法。 安卓手机比较麻烦,因为安卓手机在中国谷歌账号不能访问,所以若想跟别人来共享安卓手...

  • 安卓工具类

    原文:https://www.cnblogs.com/AbrahamCaiJin/p/7154625.html A...

  • Android 常用开源库(四)

    其他 5.1工具类 AndroidUtilCode 强大易用的安卓工具类库 RxTools Android开发人员...

  • 安卓类加载机制

    热修复、插件化很多技术都是基于安卓类加载机制实现,所以对安卓类加载机制了解很有必要

  • RN获取缓存

    需求如图 封装一个缓存的工具类 调用 安卓代码 ios端代码

  • AndroidUtilCode 最强大的工具类

    一、前言: AndroidUtilCode 是一个强大易用的安卓工具类库,它合理地封装了安卓开发中常用的函数,具...

  • AndroidUtilCode 工具类

    一、简介:AndroidUtilCode 是一个强大易用的安卓工具类库,它合理地封装了安卓开发中常用的函数,具有完...

  • 局域网内端到端的聊天项目(二)

    上一篇已实现键盘工具类的输入及表情键盘 接下来进行聊天cell的布局 图文混排的实现 键盘工具的显示/收起 及对应...

  • 安卓权限工具类

    安卓6.0后敏感权限需要动态申请,近期对之前的权限工具类做了整理和改进。目标,让敲代码更加可控的ctrl c.此...

网友评论

      本文标题:共享一个迅速实现安卓图文混排的工具类

      本文链接:https://www.haomeiwen.com/subject/newlthtx.html