美文网首页
Android源码中的utils

Android源码中的utils

作者: cd2016 | 来源:发表于2015-08-12 08:56 被阅读636次

    这篇文章重点介绍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

          本文链接:https://www.haomeiwen.com/subject/xaviqttx.html