RxMarkdown

介绍:

一个运用 RxJava API 在 android.widget.TextView 或 android.widget.EditText 中编辑和(实时)预览基本 markdown 语法的 Android 库。

运行效果:

使用说明:

Demo apk : 下载

支持语法

RxMarkdown 目前提供两种解析 markdown 的解析方式, TextFactory 和 EditFactory 。

TextFactory : 支持大部分语法,但是会破坏内容的完整性,适用于解析后在 TextView 中渲染。

EditFactory : 支持部分语法,不会破坏内容的完整性且速度比 TextFactory 快,适用于在 EditView 中实时预览。

TextFactory

  •  标题 # / ## / ### / #### / ##### / #######

  •  区域引用 >

  •  嵌套区域引用 > >

  •  粗体 **

  •  斜体 *

  •  粗体和斜体嵌套

  •  有序列表 1.

  •  嵌套有序列表

  •  无序列表 * / + / -

  •  嵌套无序列表

  •  图片 ![]()

  •  链接 []()

  •  行内代码

  •  代码区块

  •  反斜杠 \

  •  分割线 *** / ***** / --- / -----------------

  •  删除线 ~~

  •  注脚 [^]

  •  Todo - [ ] / - [x]

  •  表格 | 表格 | 表格 |

其他语法

  •  居中 [ ]

EditFactory

  •  标题 # / ## / ### / #### / ##### / #######

  •  区域引用 >

  •  嵌套区域引用 > >

  •  粗体 **

  •  斜体 *

  •  粗体和斜体嵌套

  •  有序列表 1.

  •  嵌套有序列表

  •  无序列表 * / + / -

  •  嵌套无序列表

  •  图片 ![]()

  •  链接 []()

  •  行内代码

  •  代码区块

  •  反斜杠 \

  •  分割线 *** / ***** / --- / -----------------

  •  删除线 ~~

  •  注脚 [^]

  •  Todo - [ ] / - [x]

  •  表格 | 表格 | 表格 |

其他语法

  •  居中 [ ]

引用

compile 'com.yydcdut:rxmarkdown:0.0.3'
compile 'io.reactivex:rxandroid:1.2.0'
compile 'io.reactivex:rxjava:1.1.5'

配置

RxMDConfiguration 的作用是告诉 RxMarkdown 如何展示 markdown 内容。

RxMDConfiguration#Builder 中的所有参数都是非必须的,只需要配置所需要的便可,没有配置的会设置上默认值。

RxMDConfiguration rxMDConfiguration = new RxMDConfiguration.Builder(context)
        .setDefaultImageSize(100, 100)//default image width & height
        .setBlockQuotesColor(Color.LTGRAY)//default color of block quotes
        .setHeader1RelativeSize(1.6f)//default relative size of header1
        .setHeader2RelativeSize(1.5f)//default relative size of header2
        .setHeader3RelativeSize(1.4f)//default relative size of header3
        .setHeader4RelativeSize(1.3f)//default relative size of header4
        .setHeader5RelativeSize(1.2f)//default relative size of header5
        .setHeader6RelativeSize(1.1f)//default relative size of header6
        .setHorizontalRulesColor(Color.LTGRAY)//default color of horizontal rules's background
        .setInlineCodeBgColor(Color.LTGRAY)//default color of inline code's background
        .setCodeBgColor(Color.LTGRAY)//default color of code's background
        .setTodoColor(Color.DKGRAY)//default color of todo
        .setTodoDoneColor(Color.DKGRAY)//default color of done
        .setUnOrderListColor(Color.BLACK)//default color of unorder list
        .setLinkColor(Color.RED)//default color of link text
        .setLinkUnderline(true)//default value of whether displays link underline
        .setRxMDImageLoader(new DefaultLoader(context))//default image loader
        .setDebug(true)//default value of debug
        .build();

使用

EditText 实时预览

RxMarkdown.live(rxMDEditText)
        .config(rxMDConfiguration)
        .factory(EditFactory.create())
        .intoObservable()
        .subscribe();

取消实时预览

rxMDEditText.clear();

TextView 预览

RxMarkdown.with(content, this)
        .config(rxMDConfiguration)
        .factory(TextFactory.create())
        .intoObservable()
        .subscribeOn(Schedulers.computation())
        .observeOn(AndroidSchedulers.mainThread())
        .subscribe(new Subscriber<CharSequence>() {
            @Override
            public void onCompleted() {}
            @Override
            public void onError(Throwable e) {}
            @Override
            public void onNext(CharSequence charSequence) {
                rxMDTextView.setText(charSequence, TextView.BufferType.SPANNABLE);
            }
        });

注意

RxMDImageLoader

支持的 URI 格式:

"http://web.com/image.png" // from Web
"file:///mnt/sdcard/image.png" // from SD card
"assets://image.png" // from assets
"drawable://" + R.drawable.img // from drawables (non-9patch images)

自定义 imageLoader

public class MDLoader implements RxMDImageLoader {
    @Nullable
    @Override
    public byte\[\] loadSync(@NonNull String url) throws IOException {
        return new byte\[0\];
    }
}

图片尺寸

需要在屏幕上显示高度和宽度为 320 * 320 像素的图片:

!\[image\](http://web.com/image.png/320$320)
已下载
0