Android仿微信读书左右对齐的文字效果
龙旋
共 2154字,需浏览 5分钟
·
2021-05-01 21:42
这里会涉及到实现原理的解析,如果只是需要使用轮子,请拉到最底下;
1. TextView 效果
首先,让我们先来看一下TextView的显示效果:
2. 对齐原理
那么我们就有两种实现方案:
(1)TextView绘制一行的计算原理简单粗暴,就是计算这一行显示不下一个单词的时候,就进行回车换行;TextView已经手动给我们计算出了一行能显示多少的字符,那么我们只需要通过计算剩余的宽度再进行绘制即可;
会存在问题:如果一行存在单词较少的情况,就会出现间隔过大的问题;
比如:
这样只是比第一步多了个自己计算一行能显示多少个字符的操作;
但是这样也会存在问题:如果单词存在中英文混合,或者非中文的情况,会很大概率出现换行时单词被截断的问题;
比如:
3. 最终方案
当前市场上有成熟的阅读软件,最常用的就是左右对齐的排版效果,来看看当前的阅读软件是怎么解决这些问题的;
先看一下微信读书app的显示效果:
再看一下掌阅app的显示效果:
通过手动计算一行能显示多少个单词,如果一行最后一个单词显示不下,则进行截断处理,中文则不不存在该问题,这里针对非中文的处理;然后再根据剩余空间进行绘制;
那么有了方案之后,接下来看看具体要怎么实现;
4. 最终实现
5. 优化点
<com.example.testdemo1.XQJustifyTextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:textSize="16sp"
android:gravity="start"
android:textAlignment="textStart"/>
GitHub源码地址:
https://github.com/Amterson/AlginProject
评论