package com.zzhoujay.richtext.parser; import android.text.Html; import android.text.Spanned; import android.util.Log; import java.lang.reflect.Method; /** * Created by zhou on 16-7-27. * Html2SpannedParser */ public class Html2SpannedParser implements SpannedParser { private static final String TAG = "Html2SpannedParser"; private static final String Z_HTML_CLASS_NAME = "com.zzhoujay.html.Html"; private static final Method Z_FROM_HTML_METHOD; static { Method fromHtml = null; try { fromHtml = Class.forName(Z_HTML_CLASS_NAME).getMethod("fromHtml", String.class, Html.ImageGetter.class, Html.TagHandler.class); } catch (Exception ignore) { } Z_FROM_HTML_METHOD = fromHtml; } private Html.TagHandler tagHandler; public Html2SpannedParser(Html.TagHandler tagHandler) { this.tagHandler = tagHandler; } @Override public Spanned parse(String source) { if (Z_FROM_HTML_METHOD != null) { try { return (Spanned) Z_FROM_HTML_METHOD.invoke(null, source, null, tagHandler); } catch (Exception e) { Log.d(TAG, "Z_FROM_HTML_METHOD invoke failure", e); } } return Html.fromHtml(source, null, tagHandler); } }