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