package com.mcxtzhang.zxtcommonlib;
import android.graphics.Color;
import android.graphics.Rect;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.TextUtils;
import android.text.style.AbsoluteSizeSpan;
import android.text.style.BackgroundColorSpan;
import android.text.style.ForegroundColorSpan;
import android.view.TouchDelegate;
import android.view.View;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.text.SimpleDateFormat;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* 介绍:乱七八糟的Utils
* 作者:zhangxutong
* 邮箱:zhangxutong@imcoming.com
* 时间: 2016/9/1.
*/
public class ZxtUtils {
public static boolean isDebug = true;
/**
* 返回变成朋友蓝色的SpanString
*
* @param source 源数据
* @param key 要匹配的key
* @return
*/
public static SpannableString getFriendColorSpannableString(String source, String key) {
return getColorSpannableString(source, key, Color.parseColor("#4C9AD2"));
}
/**
* 返回变色的SpanString
*
* @param source 源数据
* @param key 要匹配的key
* @param color 要变的色
* @return
*/
public static SpannableString getColorSpannableString(String source, String key, int color) {
if (source == null) {
source = "";
}
SpannableString spannableString = new SpannableString(source);//构建Span
if (!TextUtils.isEmpty(key)) {
for (int i = 0; i < key.length(); i++) {
int indexB = source.indexOf(key.charAt(i));
if (indexB > -1) {//匹配到了,加一个spans
spannableString.setSpan(/*span*/new ForegroundColorSpan(color), indexB, indexB + 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
}
}
return spannableString;
}
/**
* 返回商品的name,如果是活动,增加 活动tag字样,如果不是,不增加
*
* @param source
* @param isAct
* @return
*/
public static SpannableString getBfGoodsNameIsActSpannableString(String source, boolean isAct) {
SpannableString spannableString;
if (isAct) {
String tag = " 活动 ";//tag字样
source = tag + source;
spannableString = new SpannableString(source);
spannableString.setSpan(new BackgroundColorSpan(Color.parseColor("#ffdc5b")), 0, tag.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//设置背景色
spannableString.setSpan(new AbsoluteSizeSpan(12, true), 0, tag.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//改变部分文字大小
} else {
spannableString = new SpannableString(source);
}
return spannableString;
}
/**
* 给src 部分文字着色
*
* @param src
* @param start
* @param end
* @param color
* @return
*/
public static SpannableString getTextWithPartSpecialColor(String src, int start, int end, int color) {
if (src == null) {
src = "";
}
SpannableString spannableString = new SpannableString(src);//构建Span
spannableString.setSpan(new ForegroundColorSpan(color), start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
return spannableString;
}
/**
* 判断是否是手机号
*
* @param phone
* @return
*/
public static boolean isPhoneNum(String phone) {
if (TextUtils.isEmpty(phone)) {
return false;
}
Pattern regex1 = Pattern.compile("^(17[0-9]|13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\\d{8}$");
Matcher matcher = regex1.matcher(phone);
return matcher.matches();//是精准搜索
}
/**
* 判断是否是EMail
*
* @param email
* @return
*/
public static boolean isEmail(String email) {
if (TextUtils.isEmpty(email)) {
return false;
}
Pattern regex1 = Pattern.compile("^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$");
Matcher matcher = regex1.matcher(email);
return matcher.matches();
}
/**
* 解码URL 去掉特殊字符
* http://starry.imcoming.com.cn/sign.html?type=1022¶ms%5Burl%5D=http%3A%2F%2Fstarry.imcoming.com.cn%2Fsign.html%3Fkey%3D123123213123%26user_id%3D123¶ms%5Btitle%5D=%E7%AD%BE%E5%88%B0¶ms%5BisNeedLogin%5D=1
* http://starry.imcoming.com.cn/sign.html?type=1022¶ms[url]=http://starry.imcoming.com.cn/sign.html?key=123123213123&user_id=123¶ms[title]=签到¶ms[isNeedLogin]=1
*
* @param url
* @return
*/
public static String getDecodeUrl(String url) {
url = url.replaceAll("%(?![0-9a-fA-F]{2})", "%25");
try {
return URLDecoder.decode(url, "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return url;
}
/**
* 从字符串里返回第一个数字串
*
* @param text
* @return
*/
public static String getNumberFromString(String text) {
Pattern p = Pattern.compile("(\\d+)");
Matcher m = p.matcher(text);
if (m.find()) {
return (m.group(1));
}
return "";
}
/**
* 将long转化为"yyyy.MM.dd"
*
* @param dateLong
* @return
*/
public static String long2String1(long dateLong) {
if (dateLong == -1) {
return "至今";
}
return new SimpleDateFormat("yyyy.MM.dd").format(dateLong);
}
/**
* 将long转化为"MM.dd"
*
* @param dateLong
* @return
*/
public static String long2String2(long dateLong) {
if (dateLong == -1) {
return "至今";
}
return new SimpleDateFormat("MM.dd").format(dateLong);
}
/**
* 为View扩大点击范围
*
* @param view
* @param expandTouchWidth
*/
public static void expandViewClickRect(final View view, final int expandTouchWidth) {
final View parentView = (View) view.getParent();
parentView.post(new Runnable() {
@Override
public void run() {
final Rect rect = new Rect();
view.getHitRect(rect);
rect.top -= expandTouchWidth;
rect.bottom += expandTouchWidth;
rect.left -= expandTouchWidth;
rect.right += expandTouchWidth;
TouchDelegate touchDelegate = new TouchDelegate(rect, view);
parentView.setTouchDelegate(touchDelegate);
}
});
}
}