Skip to content

cowthan/RichText

Repository files navigation

RichText

======= 多样化的文本处理,源自https://github.com/zzhoujay/Markdown,但做了大改,所以就不合了

  • 添加了Spannable的demo
  • 添加了AwesomeText,一个将任意View变成ImageSpan的库,可以实现EditText删除一个词组

关于Span

  • TextView.setText(Spannable)
  • Spannable的实现类有:
    • StringSpannable: SpannableString spannableString = new SpannableString(CONTENT);
  • Spannable可以设置样式,具体方法是:
    • spannableString.setSpan(span, start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
    • start和end会截取一段文本
    • 参数1:span是一个Object类型,表示作用于这段文本的样式
  • 而具体样式又分为四个分支:
    • 如果一个Span影响字符层次上的文字格式,那么它继承CharacterStyle类
      • MetricAffectingSpan
      • SuggestionSpan
      • BackgroundColorSpan 背景
      • ClickableSpan 点击
      • ForegroundColorSpan 前景
      • MaskFilterSpan 模糊和浮雕
      • RasterizerSpan
      • StrikethroughSpan 删除线
      • UnbderlineSpan 下划线
    • 如果一个Span影响段落层次上的文字格式,那么它实现ParagraphStyle接口
      • AlignmentSpan
      • LeadingMarginSpan
      • LineBackgroundSpan
      • LineHeightSpan
      • TabStopSpan
      • WrapTogetherSpan
    • 如果一个Span修改字符层次上的文字外观,那么它实现UpdateAppearance接口
      • UpdateLayout
      • BackgroundColorSpan
      • ClickableSpan
      • ForegroundColorSpan
      • MaskFilterSpan
      • RasterizerSpan
      • StrikethroughSpan
      • UnderlineSpan
    • 如果一个Span修改字符层次上的度量或者尺寸,那么它实现UpdateLayout接口

Spannable的文章:

Android平台下的富文本解析器

  • 流式操作
  • 低侵入性
  • 支持Html和Markdown格式文本
  • 支持图片点击和长按事件
  • 链接点击事件和长按事件
  • 支持设置加载中和加载错误时的图片
  • 支持自定义超链接的点击回调
  • 支持修正图片宽高
  • 支持GIF图片
  • 支持Base64编码
  • 自持自定义图片加载器

效果

演示

gradle中引用的方法

compile 'com.zzhoujay.richtext:richtext:2.3.7'

Glide图片加载器

compile 'com.zzhoujay.glideimagegetter:glideimagegetter:1.0.1'

关于Glide图片加载器和默认图片加载器的区别请看这里

使用方式

多看wiki多看wiki多看wiki,重要的事情说三遍

后续计划

  • 添加自定义标签的支持 (已添加对少部分自定义标签的支持)

关于Markdown

Markdown源于子项目:Markdown

若在markdown解析过程中发现什么问题可以在该项目中反馈

富文本编辑器

编辑功能目前正在开发中,RichEditor

具体使用请查看demo

ListView DemoRecyclerView DemoGif Demo

特别感谢

感谢@huoguangjin在开发过程中对gilde的源码分析的帮助

License

The MIT License (MIT)

Copyright (c) 2016 zzhoujay

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR

IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

by zzhoujay

Releases

No releases published

Packages

No packages published

Languages