通用工具类

1、偶然在下载以为大触的代码文件时发现,某大神封装的Utils类,故保存一下,备用

以下是该封装类:

 

package com.example.shopping;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.telephony.TelephonyManager;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.Display;
import android.widget.EditText;
import android.widget.Toast;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.math.BigDecimal;
import java.security.NoSuchAlgorithmException;
import java.text.DateFormat;
import java.text.DecimalFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
import java.util.Locale;
import java.util.UUID;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/** 工具类 */
public class Utils {

	// 字符串的非空
	public static boolean isEmpty(String input) {
		if (input == null || "".equals(input) || "null".equals(input))
			return true;

		for (int i = 0; i < input.length(); i++) {
			char c = input.charAt(i);
			if (c != ' ' && c != '\t' && c != '\r' && c != '\n') {
				return false;
			}
		}
		return true;
	}

	// 判断网络是否连接
	public static boolean isNetworkConnected(Context context) {
		if (context != null) {
			ConnectivityManager mConnectivityManager = (ConnectivityManager) context
					.getSystemService(Context.CONNECTIVITY_SERVICE);
			NetworkInfo mNetworkInfo = mConnectivityManager
					.getActiveNetworkInfo();
			if (mNetworkInfo != null) {
				return mNetworkInfo.isAvailable();
			}
		}
		return false;
	}

	// 验证手机号
	public static boolean isMobileNO(String mobiles) {
		// .compile("^((13[0-9]{1})|159|153|189|182)+\\d{8}$");
		Pattern pattern = Pattern.compile("^(1[3|4|5|6|7|8][0-9])+\\d{8}$");
		Matcher m = pattern.matcher(mobiles);
		return m.matches();
	}

	// 验证身份证
	public static boolean doAuthentication(String shenfen) {
		Pattern pattern = Pattern
				.compile("^[1-9]\\d{5}[1-9]\\d{3}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}([0-9]|X)$");
		Matcher m = pattern.matcher(shenfen);
		return m.matches();
	}

	// 验证只能输入数字和字母
	public static boolean InputFigureLetter(String input) {
		Pattern pattern = Pattern.compile("^[A-Za-z0-9]+$");
		Matcher m = pattern.matcher(input);
		return m.matches();
	}

	/**
	 * 字符串转日期(yyyy-MM-dd)
	 * */
	public static Date StrToDate(String str) {
		return StrToDate(str, "yyyy-MM-dd");
	}

	/**
	 * 字符串转日期()
	 * */
	public static Date StrToDate2(String str) {
		return StrToDate(str, "yyyy-MM-dd HH:mm:ss");
	}

	/**
	 * 得到几天前的时间
	 * 
	 * @param d
	 * @param day
	 * @return
	 */
	public static Date getDateBefore(Date d, int day) {
		Calendar now = Calendar.getInstance();
		now.setTime(d);
		now.set(Calendar.DATE, now.get(Calendar.DATE) - day);
		return now.getTime();
	}

	/**
	 * 得到几天后的时间
	 * 
	 * @param d
	 * @param day
	 * @return
	 */
	public static Date getDateAfter(Date d, int day) {
		Calendar now = Calendar.getInstance();
		now.setTime(d);
		now.set(Calendar.DATE, now.get(Calendar.DATE) + day);
		return now.getTime();
	}

	/**
	 * 得到当前时间之后的几个小时时间
	 * 
	 * @param differhour
	 * @return
	 */
	public static String getCurrentHourAfter(int differhour) {
		long currenttime = new Date().getTime();
		Date dat = new Date(currenttime + 1000 * 60 * 60 * differhour);
		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		return format.format(dat);
	}

	/**
	 * 得到当前时间之前的几个小时时间
	 * 
	 * @param differhour
	 * @return
	 */
	public static String getCurrentHourBefor(int differhour) {
		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss",
				Locale.ENGLISH);
		long currenttime = new Date().getTime();
		Date dat = new Date(currenttime - 1000 * 60 * 60 * 2);
		// format.parse(format.format(dat))
		return format.format(dat);
	}

	/**
	 * 字符串转日期
	 * */
	public static Date StrToDate(String str, String formatStr) {
		SimpleDateFormat format = new SimpleDateFormat(formatStr);
		Date date = null;
		try {
			date = format.parse(str);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return date;
	}

	/**
	 * 日期转换成Java字符串
	 * 
	 * @param date
	 * @return str
	 */
	public static String DateToStr(Date date) {
		String str = "";
		try {
			SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
			str = format.format(date);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return str;
	}

	/**
	 * 时间转化
	 * 
	 * @param time
	 * @param type type类型
	 * @return
	 */
	public static String DateToStr(Date time, String type) {
		SimpleDateFormat dateFormat = new SimpleDateFormat(type);
		String date = dateFormat.format(time);
		return date;
	}

	/**
	 * 获取当前时间,格式为 :yyyy-MM-dd
	 * 
	 * @return
	 */
	public static String getCurrentDate() {
		Date now = new Date();
		SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
		String date = dateFormat.format(now);
		return date;
	}

	/**
	 * 获取当前时间,格式为 :yyyy-MM-dd
	 * 
	 * @return
	 */
	public static Integer getCurrentDate_MM() {
		Date now = new Date();
		SimpleDateFormat dateFormat = new SimpleDateFormat("MM");
		String date = dateFormat.format(now);
		return isInteger(date);
	}

	/**
	 * 获取当前时间,格式为 :yyyy-MM-dd
	 * 
	 * @return
	 */
	public static Integer getCurrentDate_dd() {
		Date now = new Date();
		SimpleDateFormat dateFormat = new SimpleDateFormat("dd");
		String date = dateFormat.format(now);
		return isInteger(date);
	}

	/**
	 * 获取指定日期的月
	 * 
	 * @return
	 * @throws ParseException
	 */
	@SuppressLint("SimpleDateFormat")
	public static Integer getDate_MM(String data) throws ParseException {
		DateFormat dateFormat1 = new SimpleDateFormat("yyyy-MM-dd");
		DateFormat dateFormat2 = new SimpleDateFormat("MM");
		Date s = dateFormat1.parse(data);
		String date = dateFormat2.format(s);
		return isInteger(date);
	}

	/**
	 * 获取当前时间,格式为 :yyyy-MM-dd HH:mm:ss
	 * 
	 * @return
	 */
	public static String getCurrentDate2() {
		Date now = new Date();
		now.setTime(System.currentTimeMillis());
		SimpleDateFormat dateFormat = new SimpleDateFormat(
				"yyyy-MM-dd HH:mm:ss");
		String date = dateFormat.format(now);
		return date;
	}

	/**
	 * 获取当前时间,格式为 :yyyy-MM-dd HH:mm
	 * 
	 * @return
	 */
	public static String getCurrentDate3() {
		Date now = new Date();
		now.setTime(System.currentTimeMillis());
		SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
		String date = dateFormat.format(now);
		return date;
	}

	/**
	 * 获取明天零点时间,格式为 :yyyy-MM-dd HH:mm:ss
	 * 
	 * @return
	 */
	public static String getTomorrowDateAtZeroAM() {
		Date date = new Date();// 取时间
		Calendar calendar = new GregorianCalendar();
		calendar.setTime(date);
		calendar.add(calendar.DATE, 1);// 把日期往后增加一天.整数往后推,负数往前移动
		date = calendar.getTime(); // 这个时间就是日期往后推一天的结果
		SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		String dateString = formatter.format(date);
		return dateString.substring(0, dateString.length() - 8) + "00:00:00";
	}

	/**
	 * 获取指定日期的日
	 * 
	 * @return
	 * @throws ParseException
	 */
	public static Integer getDate_DD(String data) throws ParseException {
		DateFormat dateFormat1 = new SimpleDateFormat("yyyy-MM-dd");
		DateFormat dateFormat2 = new SimpleDateFormat("dd");
		Date s = dateFormat1.parse(data);
		String date = dateFormat2.format(s);
		return isInteger(date);
	}

	/**
	 * 比较两个 yyyy-MM-dd 格式的日期字符串时间前后
	 * 
	 * @param date1
	 * @param date2
	 * @return true:"date1在date2后" , false:"date1在date2前"
	 */
	public static boolean dateComparator(String date1, String date2) {
		return dateComparator(date1, date2, "yyyy-MM-dd");
	}

	/**
	 * 比较两个 yyyy-MM-dd HH:mm:ss 格式的日期字符串时间前后
	 * 
	 * @param date1
	 * @param date2
	 * @return true:"date1在date2前" , false:"date1在date2后"
	 */
	public static boolean dateComparator2(String date1, String date2) {
		return dateComparator(date1, date2, "yyyy-MM-dd HH:mm:ss");
	}

	public static boolean dateComparator(String date1, String date2, String str) {
		DateFormat df = new SimpleDateFormat(str);
		try {
			Date dt1 = df.parse(date1);
			Date dt2 = df.parse(date2);
			if (dt1.getTime() > dt2.getTime()) {
				return false;
			} else if (dt1.getTime() < dt2.getTime()) {
				return true;
			} else {
				return true;
			}
		} catch (Exception exception) {
			exception.printStackTrace();
			return false;
		}
	}

	/**
	 * 获取两个日期的差 yyyy-MM-dd
	 * 
	 * @param date1
	 * @param date2
	 * @return
	 */
	public static long dateDifference1(String date1, String date2) {
		return dateDifference(date1, date2, "yyyy-MM-dd");
	}

	/**
	 * 获取两个日期的差 yyyy-MM-dd HH:mm:ss
	 * 
	 * @param date1
	 * @param date2
	 * @return
	 */
	public static long dateDifference2(String date1, String date2) {
		return dateDifference(date1, date2, "yyyy-MM-dd HH:mm:ss");

	}

	/**
	 * 获取两个日期的差
	 * 
	 * @param date1
	 * @param date2
	 * @param str
	 * @return
	 */
	public static long dateDifference(String date1, String date2, String str) {
		DateFormat df = new SimpleDateFormat(str);
		try {
			Date dt1 = df.parse(date1);
			Date dt2 = df.parse(date2);
			long temp = dt2.getTime() - dt1.getTime();
			long result = temp / (1000 * 60);
			return result;
		} catch (Exception exception) {
			exception.printStackTrace();
			return 0;
		}
	}

	/**
	 * 得到两个日期的差
	 * 
	 * @param fDate
	 * @param oDate
	 * @return 天数
	 */
	public static int daysOfTwo(String fDate, String oDate) {
		DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		Date dt1;
		Date dt2;
		try {
			dt1 = df.parse(fDate);
			dt2 = df.parse(oDate);

			Calendar aCalendar = Calendar.getInstance();

			aCalendar.setTime(dt1);

			int day1 = aCalendar.get(Calendar.DAY_OF_YEAR);
			int year1 = aCalendar.get(Calendar.YEAR);

			aCalendar.setTime(dt2);

			int day2 = aCalendar.get(Calendar.DAY_OF_YEAR);
			int year2 = aCalendar.get(Calendar.YEAR);

			return (day2 - day1) + (year2 - year1) * 365;
		} catch (ParseException e) {
			e.printStackTrace();
			return 0;
		}
	}

	/**
	 * 比较两个数的大小
	 * 
	 * @param num1
	 * @param num2
	 * @return
	 */
	public static boolean numComparator(String num1, String num2) {
		int int1;
		int int2;
		try {
			int1 = Integer.parseInt(num1.trim());
			int2 = Integer.parseInt(num2.trim());
			return int1 > int2;
		} catch (Exception e) {
			e.printStackTrace();
			return false;
		}
	}

	/**
	 * 获取当前日期是星期几<br>
	 * 
	 * @param time
	 *            需要获取的日期
	 * @return 当前日期是星期几,(从0开始,周日、周一.....)
	 */
	public static int getWeekOfDate(String time) {
		DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
		Date dt;
		int week = 0;
		try {
			dt = df.parse(time);
			Calendar cal = Calendar.getInstance();
			cal.setTime(dt);
			week = cal.get(Calendar.DAY_OF_WEEK) - 1;
			if (week < 0)
				week = 0;
		} catch (ParseException e) {
		}
		return week;
	}

	/**
	 * 判断是否为double类型
	 * 
	 * @param str
	 * @return
	 */
	public static boolean isDoubleNumeric(String str) {
		try {
			Double.parseDouble(str);
			return true;
		} catch (NumberFormatException e) { // 不是数字
			return false;
		}
	}

	/**
	 * 判断是否为数字
	 * 
	 * @param str
	 * @return
	 */
	public static boolean isNumeric(String str) {
		try {
			Integer.parseInt(str);
			return true;
		} catch (NumberFormatException e) { // 不是数字
			return false;
		}
	}

	/**
	 * 关于EditText的判断方法
	 * 
	 * @param editText
	 * @param yajin
	 *            限额大小
	 * @param c
	 */
	public static void setPricePoint(final EditText editText,
			final double yajin, final Context c) {
		editText.addTextChangedListener(new TextWatcher() {
			@Override
			public void onTextChanged(CharSequence s, int start, int before,
									  int count) {
				if (isDoubleNumeric(s.toString())) {
					if (s.toString().contains(".")) {
						if (s.length() - 1 - s.toString().indexOf(".") > 2) {
							s = s.toString().subSequence(0,
									s.toString().indexOf(".") + 3);
							editText.setText(s);
							editText.setSelection(s.length());
						}
					}
					if (s.toString().trim().substring(0).equals(".")) {
						s = "0" + s;
						editText.setText(s);
						editText.setSelection(2);
					}
					if (s.toString().startsWith("0")
							&& s.toString().trim().length() > 1) {
						if (!s.toString().substring(1, 2).equals(".")) {
							editText.setText(Utils.isDouble(s.subSequence(0,
									s.length()).toString())
									+ "");
							// editText.setSelection(s.length()+1);
							return;
						}
					}
				} else {
					return;
				}
			}

			@Override
			public void beforeTextChanged(CharSequence s, int start, int count,
										  int after) {
			}

			@Override
			public void afterTextChanged(Editable s) {
				if (s.toString().equals("")) {
					editText.setText("0");
					return;
				}
				if (!isDoubleNumeric(s.toString())) {
					editText.setText("0");
					Toast.makeText(c, "请输入正确价格", Toast.LENGTH_SHORT).show();
					return;
				}
				double strcount = Double.parseDouble(s.toString());
				double count = yajin;
				if (strcount > count) {
					editText.setText("0");
					Toast.makeText(c, "超出限额", Toast.LENGTH_SHORT).show();
				}
			}
		});
	}

	/** 时间秒数转换为时间 */
	public static String getDatesft(Long dates) {
		// long sstime = dates.toString();

		Calendar calendar = Calendar.getInstance();
		calendar.setTimeInMillis(dates);
		Date date = calendar.getTime();
		SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
		return sdf.format(date);
	}

	/** 时间秒数转换为时间 */
	public static String getFullDate(Long dates) {
		// long sstime = dates.toString();

		Calendar calendar = Calendar.getInstance();
		calendar.setTimeInMillis(dates);
		Date date = calendar.getTime();
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		return sdf.format(date);
	}

	/** 时间秒数转换为时间 */
	public static String getDate(Long dates) {
		// long sstime = dates.toString();

		Calendar calendar = Calendar.getInstance();
		calendar.setTimeInMillis(dates);
		Date date = calendar.getTime();
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		return sdf.format(date);
	}

	/** 时间秒数转换为时间 */
	public static String getDate2(Long dates) {
		// long sstime = dates.toString();

		Calendar calendar = Calendar.getInstance();
		calendar.setTimeInMillis(dates);
		Date date = calendar.getTime();
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		return sdf.format(date);
	}

	public static String checkInt(String num) {
		return (num == null || !Utils.isNumeric(num)) ? "0" : num;
	}

	public static String checkDouble(String num) {
		return (num == null || "NaN".equals(num) || !Utils.isDoubleNumeric(num)) ? "0"
				: num;
	}

	public static String checkStr(String str) {
		return Utils.isEmpty(str) ? "" : str;
	}

	/** 获取前3天时间 */
	public static String FrontThreeDay() {
		Calendar calendar = Calendar.getInstance();
		calendar.add(Calendar.DATE, -3); // 得到前三天
		Date date = calendar.getTime();
		String dates = DateToStrtimeminute(date);
		return dates;
	}

	/** 获取前15天时间 */
	public static String FroutFifteenFDays() {
		Calendar calendar = Calendar.getInstance();
		calendar.add(Calendar.DATE, -15); // 得到前十五天
		Date date = calendar.getTime();
		String dates = DateToStrtimeminute(date);
		return dates;
	}

	/** 获取前30天时间 */
	public static String FroutthirtyDays() {
		Calendar calendar = Calendar.getInstance();
		calendar.add(Calendar.DATE, -30); // 得到前三十天
		Date date = calendar.getTime();
		String dates = DateToStrtimeminute(date);
		return dates;
	}

	/**
	 * 几分钟以后的时间
	 * 
	 * @param after
	 * @return
	 */
	public static String MinueLaterTime(int after) {
		Calendar calendar = Calendar.getInstance();
		calendar.add(Calendar.MINUTE, after); // 得到前三十天
		Date date = calendar.getTime();
		String dates = DateToStrtimeminute(date);
		return dates;
	}

	/** 日期转换字符串 */
	public static String DateToStrtimeminute(Date date) {
		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		String str = format.format(date);
		return str;
	}

	/** 检查Integer数据 */
	public static Integer isInteger(Integer num) {
		return isInteger(num + "");
	}

	/** 检查Double数据 */
	public static Double isDouble(Double num) {
		return isDouble(num + "");
	}

	/** String检查Integer数据 */
	public static Integer isInteger(String num) {
		return Integer.parseInt(checkInt(num));
	}

	/** String检查Double数据 */
	public static Double isDouble(String num) {
		return Double.parseDouble(checkDouble(num));
	}

	/**
	 * 获取小时和分钟的字符串
	 * 
	 * @param mDate orderDate
	 * @return
	 */
	public static String getShorDate(Date mDate) {
		if (mDate == null) {
			return "00:00";
		}
		String hoursStr = "";
		String minutesStr = "";
		int hours = mDate.getHours();
		int minutes = mDate.getMinutes();
		if (hours < 10) {
			hoursStr = "0" + hours;
		} else {
			hoursStr = "" + hours;
		}
		if (minutes < 10) {
			minutesStr = "0" + minutes;
		} else {
			minutesStr = "" + minutes;
		}
		return hoursStr + ":" + minutesStr;
	}

	/**
	 * 两个double相减 返回保留2位小数的字符串
	 * 
	 * @param a
	 * @param b
	 * @return
	 */
	public static String getDoubleMin(double a, double b) {
		DecimalFormat df = new DecimalFormat("0.00");
		return df.format(a - b);
	}

	/**
	 * 两个double相减 返回保留2位小数的字符串
	 * 
	 * @param x a
	 * @param y b
	 * @return
	 */
	public static double getAddDouble(double x, double y) {
		BigDecimal add1 = new BigDecimal(Double.toString(x));
		BigDecimal add2 = new BigDecimal(y + "");

		return add1.add(add2).doubleValue();
	}

	/**
	 * 得到小数点后两位
	 * 
	 * @param x
	 * @return
	 */
	public static double parseDecimalDouble2(double x) {
		BigDecimal bg = new BigDecimal(isDouble(x));
		return bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
	}

	/**
	 * 得到小数点后两位
	 * 
	 * @param str
	 * @return
	 */
	public static double parseDecimalDouble2(String str) {
		BigDecimal bg = new BigDecimal(isDouble(str));
		return bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
	}

	/**
	 * 两个double相减 返回保留2位小数的字符串
	 * 
	 * @param a
	 * @param b
	 * @return
	 */
	public static String getDoubleMin(String a, String b) {
		double x = isDouble(a);
		double y = isDouble(b);
		DecimalFormat df = new DecimalFormat("0.00");
		return df.format(x - y);
	}

	/**
	 * 两个double相加 返回保留2位小数的字符串
	 * 
	 * @param a
	 * @param b
	 * @return
	 */
	public static String getDoubleAdd(double a, double b) {
		DecimalFormat df = new DecimalFormat("0.00");
		return df.format(a + b);
	}

	/**
	 * 两个double相加 返回保留2位小数的字符串
	 * 
	 * @param a
	 * @param b
	 * @return
	 */
	public static String getDoubleAdd(String a, String b) {
		double x = isDouble(a);
		double y = isDouble(b);
		DecimalFormat df = new DecimalFormat("0.00");
		return df.format(x + y);
	}

	/**
	 * double取两位
	 * 
	 * @param a
	 * @return
	 */
	public static String formatDoubleReturnString(double a) {
		DecimalFormat df = new DecimalFormat("0.00");
		return df.format(a);
	}

	/**
	 * 判断app是否安装
	 * 
	 * @author gaof
	 * @return boolean
	 */
	public static boolean isAppInstalled(Context context, String packageName) {
		final PackageManager packageManager = context.getPackageManager();
		List<PackageInfo> pinfo = packageManager.getInstalledPackages(0);
		List<String> pName = new ArrayList<String>();
		if (pinfo != null) {
			for (int i = 0; i < pinfo.size(); i++) {
				String pn = pinfo.get(i).packageName;
				pName.add(pn);
				if (pn.contains(packageName)) {
					String version = pinfo.get(i).versionName;// 获取版本号
					int versionNum = Utils.isInteger(version.replace(".", "")
							.trim());
				}
			}
		}
		return pName.contains(packageName);
	}

	/**
	 * 得到当前应用版本号
	 * 
	 * @author gaof
	 * @return boolean
	 */
	public static String getAppVersion(Context context) {
		String version = "1.0.0";
		final PackageManager packageManager = context.getPackageManager();
		PackageInfo info = null;
		try {
			info = packageManager.getPackageInfo(context.getPackageName(), 0);
			version = info.versionName;
		} catch (NameNotFoundException e) {
			e.printStackTrace();
			return version;
		}
		// info.versionCode
		// info.packageName;
		// info.signatures;

		return version;
	}

	/**
	 * 获取银联插件版本号
	 * 
	 * @param context
	 * @return 插件版本号
	 */
	public static String getYinlianPluginVersion(Context context) {
		String version = "1.0.0";
		PackageInfo info = null;
		PackageManager packageManager = context.getPackageManager();
		try {
			info = packageManager.getPackageInfo("com.chinaums.mpospluginpad",
					0);
			version = info.versionName;
		} catch (NameNotFoundException e) {
			e.printStackTrace();
		}
		return version;
	}

	/**
	 * double取两位
	 * 
	 * @param a
	 * @return
	 */
	public static double formatDoubleReturnDouble(double a) {
		DecimalFormat df = new DecimalFormat("0.00");
		return isDouble(df.format(a));
	}

	/**
	 * 把电话号码替换成带星号的 例如:182****6742 假如不是电话号码的就不进行替换
	 * 
	 * @param phone
	 * @return
	 */
	public static String replacePhoneWithAsterisk(String phone) {
		if (phone==null || phone.length()!=11) {
			return "";
		}
		String newphone = phone;
		if (isMobileNO(newphone)) {
			newphone = phone.substring(0, 3) + "****" + phone.substring(7);
		}
		return newphone;
	}

	/**
	 * 获取屏幕分辨率的高度
	 * 
	 * @param context
	 * @return
	 */
	@SuppressWarnings("deprecation")
	public static int getScreenHeight(Context context) {
		Display mDisplay = ((Activity) context).getWindowManager()
				.getDefaultDisplay();
		return mDisplay.getHeight();
	}


	/**
	 * 通过backtype的种类进行确认字段1.还车结算界面,2.违章结算界面,3.维修结算界面,4.取车租金支付,5.取车先付结算界面
	 * 6.预授权列表界面 0:不关联结算单 1:一次结算 2:二次结算 取车 支付 0 还车支付 1 违章预授权列表 2
	 * 
	 * @author gaof
	 */
	public static String ConfirmSettlementTimesVaule(String backtype) {
		String SettlementTimes = "";
		switch (Utils.isInteger(backtype)) {
		case 1:
			SettlementTimes = "1";
			break;
		case 2:
			SettlementTimes = "1";
			break;
		case 3:
			SettlementTimes = "1";
			break;
		case 4:
			SettlementTimes = "0";
			break;
		case 5:
			SettlementTimes = "0";
			break;
		case 6:
			SettlementTimes = "2";
			break;
		}
		return SettlementTimes;
	}

	/**
	 * @author gaof
	 *            将银行卡号处理为前四后6的格式
	 */
	public static String ChangeToBankCard(String bankcard) {
		String bankcardS = "";
		bankcardS = bankcard.substring(0, 6) + "*******"
				+ bankcard.substring(bankcard.length() - 4, bankcard.length());
		return bankcardS;
	}

	/**
	 * @author gaof
	 * @param billsMID
	 *            billsTID 商户编号,商户终端号
	 */
	public static boolean billsMidOrTid(String billsMID, String billsTID) {
		if (Utils.isEmpty(billsMID) || Utils.isEmpty(billsTID)) {
			return false;
		} else {
			return true;
		}
	}

	/**
	 * 验证邮政编码
	 * 
	 * @param post
	 *            邮编
	 * @return
	 */
	public static boolean checkPost(String post) {
		if (post.matches("[1-9]\\d{5}(?!\\d)")) {
			return true;
		} else {
			return false;
		}
	}

	/**
	 * double 乘法
	 * 
	 * @param d1
	 * @param d2
	 * @return
	 */
	public static double mul(double d1, double d2) {
		BigDecimal bd1 = new BigDecimal(Double.toString(d1));
		BigDecimal bd2 = new BigDecimal(Double.toString(d2));
		return bd1.multiply(bd2).doubleValue();
	}

	/**
	 * 根据月日判断星座
	 * 
	 * @return int
	 */
	public static String getConstellation(int m, int d) {

		final String[] constellationArr = { "魔羯座", "水瓶座", "双鱼座", "白羊座", "金牛座",
				"双子座", "巨蟹座", "狮子座", "处女座", "天秤座", "天蝎座", "射手座", "魔羯座" };

		final int[] constellationEdgeDay = { 20, 18, 20, 20, 20, 21, 22, 22,
				22, 22, 21, 21 };
		int month = m;
		int day = d;
		if (day <= constellationEdgeDay[month - 1]) {
			month = month - 1;
		}
		if (month >= 0) {
			return constellationArr[month];
		}
		// default to return 魔羯
		return constellationArr[11];

	}

	/**
	 * 调用系统相册
	 */
	public static void openSysPhone(int flag, Context context) {
		Intent intent2 = new Intent(Intent.ACTION_PICK,
				android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
		((Activity) context).startActivityForResult(intent2, flag);
	}

	/**
	 * 获得指定文件的byte数组
	 */
	public static byte[] getBytes(String filePath) {
		byte[] buffer = null;
		try {
			File file = new File(filePath);
			FileInputStream fis = new FileInputStream(file);
			ByteArrayOutputStream bos = new ByteArrayOutputStream(1000);
			byte[] b = new byte[1000];
			int n;
			while ((n = fis.read(b)) != -1) {
				bos.write(b, 0, n);
			}
			fis.close();
			bos.close();
			buffer = bos.toByteArray();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return buffer;
	}

	/**
	 * 判断字符串是否是数字
	 */
	public static boolean isNumber(String value) {
		return isInteger1(value) || isDouble1(value);
	}

	/**
	 * 判断字符串是否是整数
	 */
	public static boolean isInteger1(String value) {
		try {
			Integer.parseInt(value);
			return true;
		} catch (NumberFormatException e) {
			return false;
		}
	}

	/**
	 * 判断字符串是否是浮点数
	 */
	public static boolean isDouble1(String value) {
		try {
			Double.parseDouble(value);
			if (value.contains("."))
				return true;
			return false;
		} catch (NumberFormatException e) {
			return false;
		}
	}

	/** 获取设备唯一标识 */
	public static String getDeviceUnique(Context context) {
		TelephonyManager tm = (TelephonyManager) context
				.getSystemService(Context.TELEPHONY_SERVICE);
		String tmDevice, tmSerial, tmPhone, androidId;
		tmDevice = "" + tm.getDeviceId();
		tmSerial = "" + tm.getSimSerialNumber();
		androidId = ""
				+ android.provider.Settings.Secure.getString(
						context.getContentResolver(),
						android.provider.Settings.Secure.ANDROID_ID);
		UUID deviceUuid = new UUID(androidId.hashCode(),
				((long) tmDevice.hashCode() << 32) | tmSerial.hashCode());
		String uniqueId = deviceUuid.toString();
		return uniqueId;
	}

	/**
	 * 将图片文件转化为字节数组字符串,并对其进行Base64编码处理
	 * 
	 * @param filepath
	 * @return
	 */
	public static byte[] getBase64(String filepath) {
		if (Utils.isEmpty(filepath)) {
			return null;
		}
		InputStream in = null;
		byte[] data = null;
		// 读取图片字节数组
		try {
			in = new FileInputStream(filepath);
			data = new byte[in.available()];
			in.read(data);
			in.close();
		} catch (IOException e) {
			e.printStackTrace();
			return null;
		}
		return android.util.Base64.encode(data, android.util.Base64.DEFAULT);
	}

	public static String getAge(Date birthDay) throws Exception {
		Calendar cal = Calendar.getInstance();

		if (cal.before(birthDay)) {
			throw new IllegalArgumentException(
					"The birthDay is before Now.It's unbelievable!");
		}

		int yearNow = cal.get(Calendar.YEAR);
		int monthNow = cal.get(Calendar.MONTH) + 1;
		int dayOfMonthNow = cal.get(Calendar.DAY_OF_MONTH);

		cal.setTime(birthDay);
		int yearBirth = cal.get(Calendar.YEAR);
		int monthBirth = cal.get(Calendar.MONTH);
		int dayOfMonthBirth = cal.get(Calendar.DAY_OF_MONTH);

		int age = yearNow - yearBirth;

		if (monthNow <= monthBirth) {
			if (monthNow == monthBirth) {
				if (dayOfMonthNow < dayOfMonthBirth) {
					age--;
				}
			} else {
				age--;
			}
		}

		return age + "";
	}

	/**
	 * 根据手机的分辨率从 dp 的单位 转成为 px(像素)
	 */
	public static int dip2px(Context context, float dpValue) {
		final float scale = context.getResources().getDisplayMetrics().density;
		return (int) (dpValue * scale + 0.5f);
	}

	/**
	 * 根据手机的分辨率从 px(像素) 的单位 转成为 dp
	 */
	public static int px2dip(Context context, float pxValue) {
		final float scale = context.getResources().getDisplayMetrics().density;
		return (int) (pxValue / scale + 0.5f);
	}

	/**
	 * 验证邮箱格式是否正确
	 * 
	 * @param mail
	 * @return
	 */
	public static boolean isMail(String mail) {
		boolean ismail = false;
		String check = "^([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$";
		// String check =
		// "^[a-z0-9]+([._\\-]*[a-z0-9])*@([a-z0-9]+[-a-z0-9]*[a-z0-9]+.){1,63}[a-z0-9]+$";
		try {
			Pattern p = Pattern.compile(check);
			Matcher m = p.matcher(mail);
			ismail = m.matches();
		} catch (Exception e) {
			ismail = false;
		}
		return ismail;
	}
	/**
	 * 获取 数据摘要
	 * @param source
	 * @return
	 */
	public static String getMD5(byte[] source){
		 String s = null;
	        char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',  
	                'a', 'b', 'c', 'd', 'e', 'f' };// 用来将字节转换成16进制表示的字符  
	        try {  
	            java.security.MessageDigest md = java.security.MessageDigest  
	                    .getInstance("MD5");  
	            md.update(source);
	            byte tmp[] = md.digest();// MD5 的计算结果是一个 128 位的长整数,  
	            // 用字节表示就是 16 个字节  
	            char str[] = new char[16 * 2];// 每个字节用 16 进制表示的话,使用两个字符, 所以表示成 16  
	            // 进制需要 32 个字符  
	            int k = 0;// 表示转换结果中对应的字符位置  
	            for (int i = 0; i < 16; i++) {// 从第一个字节开始,对 MD5 的每一个字节// 转换成 16  
	                // 进制字符的转换  
	                byte byte0 = tmp[i];// 取第 i 个字节  
	                str[k++] = hexDigits[byte0 >>> 4 & 0xf];// 取字节中高 4 位的数字转换,// >>>  
	                // 为逻辑右移,将符号位一起右移  
	                str[k++] = hexDigits[byte0 & 0xf];// 取字节中低 4 位的数字转换  
	            }  
	            s = new String(str);// 换后的结果转换为字符串
	        } catch (NoSuchAlgorithmException e) {
	            // TODO Auto-generated catch block  
	            e.printStackTrace();  
	        }  
	        return s;  
	}
}

 

 

 

2、根据封装类自己写的测试星座的小demo

 

package com.example.shopping;


import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;


public class MainActivity extends AppCompatActivity implements View.OnClickListener{

    private TextView textView;
    private Button button;
    private EditText et1,et2;
    private int yue,date;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initview();
    }

    private void initview(){
        button= (Button) findViewById(R.id.button);
        textView= (TextView) findViewById(R.id.textView);
        et1= (EditText) findViewById(R.id.et1);
        et2= (EditText) findViewById(R.id.et2);
        button.setOnClickListener(this);

    }

    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.button:
                String s=  et1.getText().toString();
                String s2=et2.getText().toString();
                String star= Utils.getConstellation(Integer.parseInt(s),Integer.parseInt(s2));
                textView.setText(star);
                break;
        }
    }


}


3、Mainactivity布局文件

 

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.example.shopping.MainActivity">
  <EditText
      android:id="@+id/et1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="输入月份"/>

    <EditText
        android:id="@+id/et2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="输入日期"/>
<TextView
    android:id="@+id/textView"
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:textSize="20dp"/>

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="点击获取"/>
</LinearLayout>

 

 

 

注:测试工程中出现了NumberFormatException

String转int的时候报错,导致闪退,原因:  使用editText获取的两个字符串放在了initView()中,导致每次点击按钮就闪退,最后,直接放在点击事件里面就好了

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值