Android仿微信讀書左右對齊的文字效果
這里會涉及到實現(xiàn)原理的解析,如果只是需要使用輪子,請拉到最底下;
1. TextView 效果
首先,讓我們先來看一下TextView的顯示效果:

2. 對齊原理
那么我們就有兩種實現(xiàn)方案:
(1)TextView繪制一行的計算原理簡單粗暴,就是計算這一行顯示不下一個單詞的時候,就進行回車換行;TextView已經(jīng)手動給我們計算出了一行能顯示多少的字符,那么我們只需要通過計算剩余的寬度再進行繪制即可;
會存在問題:如果一行存在單詞較少的情況,就會出現(xiàn)間隔過大的問題;
比如:

這樣只是比第一步多了個自己計算一行能顯示多少個字符的操作;
但是這樣也會存在問題:如果單詞存在中英文混合,或者非中文的情況,會很大概率出現(xiàn)換行時單詞被截斷的問題;
比如:

3. 最終方案
當(dāng)前市場上有成熟的閱讀軟件,最常用的就是左右對齊的排版效果,來看看當(dāng)前的閱讀軟件是怎么解決這些問題的;
先看一下微信讀書app的顯示效果:

再看一下掌閱app的顯示效果:

通過手動計算一行能顯示多少個單詞,如果一行最后一個單詞顯示不下,則進行截斷處理,中文則不不存在該問題,這里針對非中文的處理;然后再根據(jù)剩余空間進行繪制;
那么有了方案之后,接下來看看具體要怎么實現(xiàn);
4. 最終實現(xiàn)

5. 優(yōu)化點
<com.example.testdemo1.XQJustifyTextViewandroid: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
評論
圖片
表情
