Android源码中的utils

这篇文章重点介绍Android源码给提供的一些可用的技巧

  • isURL 判断链接 首先我们知道textview有autolink属性对应代码的Linkify类有 ALL = WEB_URLS | EMAIL_ADDRESSES | PHONE_NUMBERS | MAP_ADDRESSES; 这里是正则判定诸如链接 电话 邮箱地址等 链接判定就位于Patterns.java WEB_URL 有了这个可以方便的运用简单的正则预判链接 方便在发送框里面预判链接 从而达到预先解析的目的
  • autolink链接去下划线 改颜色 link跳转到自己的webview处理 URLSpan此类系统提供 主要有onClick getURL updateDrawState 等方法 提供链接的捕获 点击事件 着色等 写一个类 URLSpanUtil
public class URLSpanUtil extends URLSpan {

    public URLSpanUtil(String url) {
        super(url);
    }

    @Override
    public void updateDrawState(TextPaint ds) {
        ds.setColor(UtilApplication.ctx.getResources().getColor(R.color.underline_color));
        ds.setUnderlineText(false);
    }


    @Override
    public void onClick(View widget) {
    //        super.onClick(widget);
        Context context = widget.getContext();
        String url = getURL();
        if (StrUtil.notEmptyOrNull(url)) {
            //这里简单判定url
            if (url.startsWith("http") || url.startsWith("https")) {
                //跳转到自己的webview处理
                Intent intent = new Intent(context, WebViewActivity.class);
                context.startActivity(intent);
            }else {
                super.onClick(widget);
            }
        }else {
            super.onClick(widget);
        }
    }
}

继承重写父类 达到目的 TextView 使用方法

public static void stripUnderlines(TextView textView) {
        if (null != textView && textView.getText() instanceof Spannable) {
            Spannable s = (Spannable) textView.getText();
            URLSpan[] spans = s.getSpans(0, s.length(), URLSpan.class);
            if (spans != null && spans.length > 0) {
                for (URLSpan span : spans) {
                    int start = s.getSpanStart(span);
                    int end = s.getSpanEnd(span);
                    s.removeSpan(span);
                    span = new URLSpanUtils(span.getURL());
                    s.setSpan(span, start, end, 0);
                }
            }
        }
    }

你可能感兴趣的:(Android源码中的utils)