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()中,导致每次点击按钮就闪退,最后,直接放在点击事件里面就好了