需求场景是这样的:
在Android中实现如下效果:
很多人都会说:So easy!交给h5去做,It’s not my bussiness!
好吧,我也好想说一句:H5你去做吧,It’s not my bussiness!
然并卵,产品需求说要做Android源生的,然后苦逼的事情就此开始了……
然后,思想步入正轨,开始思考这个需求的实现方式:
1.一个TextView控件,通过SpannableString的方式把“打开百度”字样拼接上去
必须承认,这是实现这种效果为数不多的方法之一,然而实现过程会略显复杂:
首先需要确定”打开百度”几个字符的位置,然后通过SpannableString拼接到TextView上去。
Finished!
Really ? It’s not finished!
需求分析并非如此!
将”打开百度”文字按照这个样式拼上去只是第一步,更重要的是你点击这个TextView能从浏览器中打开这个百度链接吗?
那有人就会说了,再获取到url通过浏览器打开就行了!
的确,这样是可以实现,但是拼接指定样式的字符已经是很复杂了,再获取URL打开链接会让实现方式更复杂一些,而且这些需求的实现过程都是在View层操作的,比如你在Activity中先获取到这个TextView,然后在通过SpannaleString 将字符拼接,然后再拿到URL去打开链接。
换句话说,如果有100个地方需要实现这种效果,就需要通过相同的逻辑复制100遍。
换个思路,能不能通过“改造”TextView自动实现这一过程?
必须可以。
然后第二种实现方式就来了。
2.通过Html.fromHtml的方式实现
也就是说,将这些文字用html的格式传递,然后TextView使用Html的方式实现效果!
那么我们真正需要的数据格式应该是这样的:
<font color="black" style="text-size:20;">
周末加班