技术总结--android篇--工具类总结

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了技术总结--android篇--工具类总结相关的知识,希望对你有一定的参考价值。

StringUtil(视个人须要进行加入)

public class StringUtil {
	
	public static boolean isMail(String string) {
		if (null != string) {
			if (string.matches("^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$")) {
				return true;
			}
		}
		return false;
	}
	
	/**
	 * 推断手机号码的正确性
	 * 
	 * @param mobiles
	 * @return
	 */
	public static boolean isMobileNumber(String mobiles) {
		
		if (null != mobiles) {
			Pattern p = Pattern
					.compile("^((13[0-9])|(15[^4,\\D])|(18[0-9]))\\d{8}$");
			Matcher m = p.matcher(mobiles);
			return m.matches();
		}else {
			return false;
		}
	}

	/**
	 * 是否为 null 或者为空字符串
	 * @param string
	 * @return false if null || ""
	 */
	public static boolean isNotNull(String string) {
		
		if (string == null || "".equals(string)) {
			return false;
		}else {
			return true;
		}
	}
	
	/**
	 * 推断字符串是否是整数
	 */
	public static boolean isInteger(String value) {
		try {
			Integer.parseInt(value);
			return true;
		} catch (NumberFormatException e) {
			return false;
		}
	}
	
	
	/**
	 * 字符串长度补齐,方便打印时对齐,美化打印页面,只是中文计算好像有点问题
	 * 
	 * @param strs
	 *            源字符
	 * @param len
	 *            指定字符长度
	 * @return
	 * @throws UnsupportedEncodingException 
	 */
	public static String Fix_String_Lenth(int type ,String strs, int len) {
		String strtemp = strs;
		int len1 = strs.length();
		switch (type) {
		case 0:
			while (strtemp.length() < len*"我".length()) {
				strtemp += " ";}
			break;
			case 1:
				while (strtemp.length() < len) {
					strtemp += " ";}
				break;
		default:
			
			break;
		}		
		return strtemp;
	}
	
}

ImageUtil

public class ImageUtil
{
	public static byte[] getimage(String path) throws Exception
	{
		URL url = new URL(path);// 设置URL
		HttpURLConnection conn = (HttpURLConnection) url.openConnection();// 打开链接
		conn.setRequestMethod("GET");// 设置链接方式
		conn.setConnectTimeout(5 * 1000);// 设置链接超时
		InputStream inStream = conn.getInputStream();// 得到输入泿

		byte[] data = readinputStream(inStream);
		return data;
	}

	public static byte[] readinputStream(InputStream inputStream)
	{
		ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
		byte[] buffer = new byte[1024];
		int lns = 0;
		try {
			while ((lns = inputStream.read(buffer)) != -1)
			{
				outputStream.write(buffer, 0, lns);
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
		return outputStream.toByteArray();
	}

	public static Bitmap getBitmapFromBase64String(String imageString)
	{
		// 对字节数组字符串进行Base64解码并生成图燿
		if (imageString == null) // 图像数据为空
			return null;
		byte[] data = Base64.decode(imageString, Base64.DEFAULT);
		return BitmapFactory.decodeByteArray(data, 0, data.length);
	}
	

	public static String getBitmapString(String image)
	{
		Bitmap bitmap = BitmapFactory.decodeFile(image);
		ByteArrayOutputStream baos = new ByteArrayOutputStream();
		bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);
		byte[] data = baos.toByteArray();

		return Base64.encodeToString(data, Base64.DEFAULT);// 返回Base64编码过的字节数组字符
	}
	

	public static String getBase64StringFromFile(String imageFile)
	{
		// 将图片文件转化为字节数组字符串。并对其进行Base64编码处理
		InputStream in = null;
		byte[] data = null;
		// 读取图片字节数组
		try
		{
			in = new FileInputStream(imageFile);
			data = new byte[in.available()];
			in.read(data);
			in.close();
		}
		catch (IOException e)
		{
			e.printStackTrace();
		}
		// 对字节数组Base64编码
		return Base64.encodeToString(data, Base64.DEFAULT);// 返回Base64编码过的字节数组字符
	}
	
	
	/**
	 * drawable -> Bitmap
	 * @param drawable
	 * @return
	 */
	public static Bitmap drawableToBitmap(Drawable drawable) {  
        
        Bitmap bitmap = Bitmap  
                        .createBitmap(  
                                        drawable.getIntrinsicWidth(),  
                                        drawable.getIntrinsicHeight(),  
                                        drawable.getOpacity() != PixelFormat.OPAQUE ?

Bitmap.Config.ARGB_8888 : Bitmap.Config.RGB_565); Canvas canvas = new Canvas(bitmap); //canvas.setBitmap(bitmap); drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight()); drawable.draw(canvas); return bitmap; } /** * resource - > Bitmap * @param context * @param resId * @return */ public static Bitmap resourceToBitmap(Context context ,int resId){ Resources res = context.getResources(); Bitmap bitmap = BitmapFactory.decodeResource(res, resId); return bitmap; } /** * Bitmap - > Bytes * @param bm * @return */ public static byte[] Bitmap2Bytes(Bitmap bm){ ByteArrayOutputStream baos = new ByteArrayOutputStream(); bm.compress(Bitmap.CompressFormat.PNG, 100, baos); return baos.toByteArray(); } /** * Bytes - > Bitmap * @param b * @return */ public static Bitmap Bytes2Bitmap(byte[] b){ if(b.length!=0){ return BitmapFactory.decodeByteArray(b, 0, b.length); } else { return null; } } /** * bitmap -> Base64 * @param bitmap * @return */ public static String bitmapToBase64(Bitmap bitmap) { String result = null; ByteArrayOutputStream baos = null; try { if (bitmap != null) { baos = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos); baos.flush(); baos.close(); byte[] bitmapBytes = baos.toByteArray(); result = Base64.encodeToString(bitmapBytes, Base64.DEFAULT); } } catch (IOException e) { e.printStackTrace(); } finally { try { if (baos != null) { baos.flush(); baos.close(); } } catch (IOException e) { e.printStackTrace(); } } return result; } //获取图片 public static Bitmap getimage(ContentResolver cr, Uri uri, int screeWidth,int screeHeight) { try { Bitmap bitmap = null; BitmapFactory.Options newOpts = new BitmapFactory.Options(); // options.inJustDecodeBounds=true,图片不载入到内存中 newOpts.inJustDecodeBounds = true; BitmapFactory.decodeStream(cr.openInputStream(uri), null, newOpts); newOpts.inJustDecodeBounds = false; int imgWidth = newOpts.outWidth; int imgHeight = newOpts.outHeight; // 缩放比,1表示不缩放 int scale = 1; if (imgWidth > imgHeight && imgWidth > screeWidth) { scale = (int) (imgWidth / screeWidth); } else if (imgHeight > imgWidth && imgHeight > screeHeight) { scale = (int) (imgHeight / screeHeight); } newOpts.inSampleSize = scale;// 设置缩放比例 bitmap = BitmapFactory.decodeStream(cr.openInputStream(uri), null,newOpts); return bitmap; } catch (Exception e) { e.printStackTrace(); return null; } } }


DateUtil

public class DateUtil {
	public final static String yyyy = "yyyy";
	public final static String MM_dd = "MM-dd";
	public final static String dd = "dd";
	public final static String yyyy_MM_dd = "yyyy-MM-dd";
	public final static String yyyy_MM_dd_HH_mm = "yyyy-MM-dd HH:mm";
	public final static String yyyy_MM_dd_HH_mm_ss = "yyyy-MM-dd HH:mm:ss";
	public final static String yyyy_MM_dd_HH_mm_ss_SSS = "yyyy-MM-dd HH:mm:ss SSS";
	public final static String MM_dd_HH_mm_ss = "MM-dd  HH:mm:ss";
	public final static String yyyy_MM_dd_HH_mm_local = "yyyy年MM月dd日 HH:mm";

	/**
	 * 返回当天日期的字符串,能够自己定格式,格式如上
	 * @param pattern
	 * @return
	 */
	public static String now(String pattern) {
		SimpleDateFormat df = new SimpleDateFormat(pattern);
		return df.format(Calendar.getInstance().getTime());
	}

	public static String now_yyyy() {
		return now(yyyy);
	}

	public static String now_MM_dd() {
		return now(MM_dd);
	}

	public static String now_dd() {
		return now(dd);
	}

	public static String now_yyyy_MM_dd() {
		return now(yyyy_MM_dd);
	}

	public static String now_yyyy_MM_dd_HH_mm_ss() {
		return now(yyyy_MM_dd_HH_mm_ss);
	}

	public static String now_yyyy_MM_dd_HH_mm_ss_SSS() {
		return now(yyyy_MM_dd_HH_mm_ss_SSS);
	}

	public static String now_MM_dd_HH_mm_ss() {
		return now(MM_dd_HH_mm_ss);
	}

	/**
	 * 获得年龄
	 * @param birth
	 * @return
	 */
	public static String getAge(String birth) { // 传进来的格式一定要相应1991-05-25
		if ("".equals(birth))
			return "";

		int nowAge = 0;
		Date date = strToDateCN_yyyy_MM_dd(birth);
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(date);
		int birth_year = calendar.get(Calendar.YEAR);
		int birth_month = calendar.get(Calendar.MONTH);
		int birth_day = calendar.get(Calendar.DAY_OF_MONTH);
		calendar.setTime(new Date());
		int now_year = calendar.get(Calendar.YEAR);
		int now_month = calendar.get(Calendar.MONTH);
		int now_day = calendar.get(Calendar.DAY_OF_MONTH);
		
		nowAge = now_year - birth_year;
		if (now_month < birth_month) {
			nowAge--;
		} else if (now_month == birth_month && now_day < birth_day) {
			nowAge--;
		}
		if (nowAge < 0)
			nowAge = 0;
		return "" + nowAge;
	}

	public static String getStauts(String stime,String rtime){
		if(stime == null || rtime == null)
			return "";
		String status = "";
		try {
			Date sDate = strToDateLoc_yyyy_MM_dd_HH_mm(stime);
			Date rDate = strToDateLoc_yyyy_MM_dd_HH_mm(rtime);
			Date nDate = new Date();
			if(nDate.getTime() < sDate.getTime())
				status = "准备中";
			else if(nDate.getTime() > rDate.getTime()){
				status = "已结束";
			}
			else
				status = "进行中";
		} catch (Exception e) {
			e.printStackTrace();
			status = "";
		}
		return status;
	}
	
	
	/**
	 * 聊天显示
	 * @param timeString
	 * @return 三小时前、昨天等
	 */
	private static String getRecentTime(String timeString,Date date) { 
		if(timeString == null || "".equals(timeString))
			return "";
		StringBuilder cn_string = new StringBuilder();
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(date);
		int day = calendar.get(Calendar.DAY_OF_YEAR);         //月份中的日
		int week = calendar.get(Calendar.WEEK_OF_YEAR);          //年中周
		int hour = calendar.get(Calendar.HOUR_OF_DAY);           //时间
		
		int month = calendar.get(Calendar.MONTH)+1;         //月份.显示用
		int day_of_week = calendar.get(Calendar.DAY_OF_WEEK)-1;   //周中的日.显示用
		if(day_of_week == 0) day_of_week = 7;
		int minute = calendar.get(Calendar.MINUTE);             //分钟.显示用
		
		Calendar nowCalendar = Calendar.getInstance();
		nowCalendar.setTime(new Date());
		int now_day = nowCalendar.get(Calendar.DAY_OF_YEAR);
		int now_week = nowCalendar.get(Calendar.WEEK_OF_YEAR);
		int now_hour = nowCalendar.get(Calendar.HOUR_OF_DAY);
		//时间字符串
		StringBuilder hoursString = new StringBuilder(""+hour);
		StringBuilder minutesString = new StringBuilder(""+minute);
		
		if(hour<10)
			hoursString.insert(0, "0");
		if(minute<10)
			minutesString.insert(0, "0");
		
		if(day == now_day && hour == now_hour){
			cn_string.append("刚刚");
		}
		else if((now_day - day >=0) &&(now_day - day < 1) && (now_hour - hour < 24) && (now_hour - hour >0)){
			cn_string.append(now_hour-hour).append("小时前");
		}
		else if(now_day == day){
			cn_string.append("今天").append(hoursString).append(":").append(minutesString);
		}
		else if(now_day - day == 1)
			cn_string.append("昨天").append(hoursString).append(":").append(minutesString);
		else if(now_day - day == 2)
			cn_string.append("前天").append(hoursString).append(":").append(minutesString);
		else if(day - now_day == 1)
			cn_string.append("明天").append(hoursString).append(":").append(minutesString);
		else if(day - now_day == 2)
			cn_string.append("后天").append(hoursString).append(":").append(minutesString);
		else if((week == now_week && day>now_day ) || (week - now_week == 1 && day_of_week == 7))
			cn_string.append("周").append(numToUpper(day_of_week)).append(" ").append(hoursString).append(":").append(minutesString);
		else if(week - now_week ==1)
			cn_string.append("下周").append(numToUpper(day_of_week)).append(" ").append(hoursString).append(":").append(minutesString);
		else{  //直接显示
			StringBuilder monthString = new StringBuilder(""+month);
			int _day = calendar.get(Calendar.DAY_OF_MONTH);         //月份中的日
			StringBuilder dayString = new StringBuilder(""+_day);
			if(month <10)
				monthString.insert(0, "0");
			if(_day<10)
				dayString.insert(0, "0");
			cn_string.append(monthString).append("月").append(dayString).append("日").append(hoursString).append(":").append(minutesString);
		}
		return cn_string.toString();
	}
	
	/**
	 * 02-01 12:11:56
	 * @param timeString
	 * @return
	 */
	public static String getRecentTimeMM_dd_ss(String timeString){ 
		Date date = strToDateMM_dd_ss(timeString);
		return getRecentTime(timeString, date);
	}
	
	/**
	 * 2012年01月03日 12:55
	 * @param timeString
	 * @return
	 */
	public static String getRecentTimeyyyy_MM_dd(String timeString){ 
		Date date = strToDateLoc_yyyy_MM_dd_HH_mm(timeString);
		return getRecentTime(timeString, date);
	}
	
	/**
	 * 2012-01-03 12:55:12
	 * @param timeString
	 * @return
	 */
	public static String getRecentTimeCN_yyyy_MM_dd_HH_mm_ss(String timeString) {
		Date date = strToDateCN_yyyy_MM_dd_HH_mm_ss(timeString);
		return getRecentTime(timeString, date);
	}
	
	
	
	
	/**
	 * 是否超过三天。推断能否上传图片
	 * @param runtime
	 * @return
	 */
	public static boolean isOver3Day(String runtime){
		boolean is = false;
		Date runDate =  strToDateLoc_yyyy_MM_dd_HH_mm(runtime);
		Date now = new Date();
		if((now.getTime() - runDate.getTime()) > (3*24*60*60*1000)){
			is = true;
		}
		return is;
	}
	
	public static String getHi(){
		int nowHour = new Date().getHours();
		if(nowHour>=0 && nowHour <6){
			return "凌晨好!

"; } else if(nowHour>=6 && nowHour<12){ return "上午好!"; } else if(nowHour>=12 && nowHour<18){ return "下午好!

"; } else{ return "晚上好!"; } } public static final String[] zodiacArr = { "猴", "鸡", "狗", "猪", "鼠", "牛", "虎", "兔", "龙", "蛇", "马", "羊" }; public static final String[] constellationArr = { "水瓶座", "双鱼座", "牡羊座", "金牛座", "双子座", "巨蟹座", "狮子座", "处女座", "天秤座", "天蝎座", "射手座", "魔羯座" }; public static final int[] constellationEdgeDay = { 20, 19, 21, 21, 21, 22, 23, 23, 23, 23, 22, 22 }; /** * 依据日期获取生肖 * @return */ public static String date2Zodica(String birth) { if ("".equals(birth)) return ""; return zodiacArr[Integer.valueOf(birth.split("-")[0]) % 12]; } /** * 依据日期获取星座 * @param time * @return */ public static String date2Constellation(String birth) { // 传进来的格式一定要相应1991-05-25 Date date = strToDateCN_yyyy_MM_dd(birth); Calendar calendar = Calendar.getInstance(); calendar.setTime(date); int month = calendar.get(Calendar.MONTH); int day = calendar.get(Calendar.DAY_OF_MONTH); if (day < constellationEdgeDay[month]) { month = month - 1; } if (month >= 0) { return constellationArr[month]; } //default to return 魔羯 return constellationArr[11]; } /** * * @param dateString * yyyy年MM月dd日 HH:mm * @return like: 明天 15:00 */ public static String ch_time(String dateString) { // System.out.println("pppppt-->"+dateString); String cn_string = null; Date date = DateUtil.strToDate(dateString); Calendar calendar = Calendar.getInstance(); calendar.setTime(date); int hour = calendar.get(Calendar.HOUR_OF_DAY); int minute = calendar.get(Calendar.MINUTE); String hString,mString; if (hour < 10) { hString = "0" + hour; }else { hString = ""+hour; } if (minute < 10) { mString = "0"+minute; }else { mString = ""+minute; } String time = hString+":"+mString; hString = null; mString = null; //去掉日下面的时间 calendar.clear(Calendar.HOUR_OF_DAY); calendar.clear(Calendar.HOUR); calendar.clear(Calendar.MINUTE); calendar.clear(Calendar.SECOND); calendar.clear(Calendar.MILLISECOND); Calendar nowCalendar = Calendar.getInstance(); nowCalendar.clear(Calendar.HOUR_OF_DAY); nowCalendar.clear(Calendar.HOUR); nowCalendar.clear(Calendar.MINUTE); nowCalendar.clear(Calendar.SECOND); nowCalendar.clear(Calendar.MILLISECOND); long flag = (calendar.getTimeInMillis() - nowCalendar.getTimeInMillis() ) / (1000 * 60 * 60 * 24); // System.out.println("ppssss->" + flag); if (flag == 0) { cn_string = "今天 " + time; } else if (flag == 1) { cn_string = "明天 " + time; } else if (flag == 2) { cn_string = "后天 " + time; } else if (flag <= getDatePlus() + 7 && flag > 0) { if (!getNextWeekDate(calendar).equals("")) { cn_string = getNextWeekDate(calendar) + time; } else { cn_string = dateString; } } else { cn_string = dateString; } time = null; return cn_string; } /** * * @param date * @param pattern * @return */ public static String dateToStr(Date date, String pattern) { if(date == null) return ""; SimpleDateFormat sdf = new SimpleDateFormat(pattern); return sdf.format(date); } /** * 将日期时间型转成字符串 如:" 2002-07-01 11:40:02" * * @param inDate * 日期时间 " 2002-07-01 11:40:02" * @return String 转换后日期时间字符串 */ public static String dateToStr_yyyy_MM_dd_HH_mm_ss(Date date) { return dateToStr(date, yyyy_MM_dd_HH_mm_ss); } /** * 将日期时间型转成字符串 如:" 2002-07-01 11:40:02" * * @param inDate * 日期时间 " 2002-07-01 11:40:02" * @return String 转换后日期时间字符串 */ public static String dateToStr_yyyy_MM_dd_HH_mm(Date date) { return dateToStr(date, yyyy_MM_dd_HH_mm); } /** * yyyy年MM月dd日 HH:mm * * @param date * @return */ public static String dateToStrLocal(Date date) { return dateToStr(date, yyyy_MM_dd_HH_mm_local); } /** * 将日期时间型转成字符串 如:" 2002-07-01 11:40:02" * * @param inDate * 日期时间 " 2002-07-01 11:40:02" * @return String 转换后日期时间字符串 */ public static String dateToStr_MM_dd_HH_mm_ss(Date date) { return dateToStr(date, MM_dd_HH_mm_ss); } /** * 将日期型转成字符串 如:"2002-07-01" * * @param inDate * 日期 "2002-07-01" * @return String 转换后日期字符串 */ public static String dateToStr_yyyy_MM_dd(Date date) { return dateToStr(date, yyyy_MM_dd); } /** * 将字符串型(英文格式)转成日期型 如: "Tue Dec 26 14:45:20 CST 2000" * * @param DateFormatStr * 字符串 "Tue Dec 26 14:45:20 CST 2000" * @return Date 日期 */ public static Date strToDateEN(String shorDateStr) { Date date = null; try { SimpleDateFormat sdf = new SimpleDateFormat( "EEE MMM dd hh:mm:ss 'CST' yyyy", java.util.Locale.US); return sdf.parse(shorDateStr); } catch (Exception e) { return new Date(); } } /** * 将字符串型(中文格式)转成日期型 如:"2002-07-01 22:09:55" * * @param datestr * 字符串 "2002-07-01 22:09:55" * @return Date 日期 */ public static Date strToDateCN_yyyy_MM_dd_HH_mm_ss(String datestr) { Date date = null; try { SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); date = fmt.parse(datestr); } catch (Exception e) { return date; } return date; } /** * 将字符串型(中文格式)转成日期型 如:"2002-07-01 22:09" * * @param datestr * 字符串 "2002-07-01 22:09" * @return Date 日期 */ public static Date strToDateCN_yyyy_MM_dd_HH_mm(String datestr) { Date date = null; try { SimpleDateFormat fmt = new SimpleDateFormat(yyyy_MM_dd_HH_mm); date = fmt.parse(datestr); } catch (Exception e) { return date; } return date; } /**yyyy_MM_dd_HH_mm * @param datestr * @return */ public static Date strToDateLoc_yyyy_MM_dd_HH_mm(String datestr) { Date date = null; try { SimpleDateFormat fmt = new SimpleDateFormat(yyyy_MM_dd_HH_mm_local); date = fmt.parse(datestr); } catch (Exception e) { return date; } return date; } /**MM-dd HH:mm * @param datestr * @return */ public static Date strToDateMM_dd_ss(String datestr) { Date date = null; try { SimpleDateFormat fmt = new SimpleDateFormat(MM_dd_HH_mm_ss); date = fmt.parse(datestr); } catch (Exception e) { return date; } return date; } /** * * @param datestr * @return */ public static Date strToDateCN_yyyy_MM_dd(String datestr) { Date date = null; try { SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd"); date = fmt.parse(datestr); } catch (Exception e) { return date; } return date; } /** * * @param datestr * yyyy年MM月dd日 HH:mm * @return */ public static Date strToDate(String datestr) { Date date = null; try { SimpleDateFormat fmt = new SimpleDateFormat("yyyy年MM月dd日 HH:mm"); date = fmt.parse(datestr); } catch (Exception e) { return date; } return date; } /** * 转换util.date-->sql.date * * @param inDate * @return */ public static java.sql.Date UtilDateToSqlDate(Date inDate) { return new java.sql.Date(getDateTime(inDate)); } private static long getDateTime(Date date) { Calendar cal = Calendar.getInstance(); cal.setTime(date); int year = cal.get(Calendar.YEAR); int month = cal.get(Calendar.MONTH); int day = cal.get(Calendar.DATE); cal.set(year, month, day, 0, 0, 0); long result = cal.getTimeInMillis(); result = result / 1000 * 1000; return result; } /** * 遍历刚从数据库里查出来的Map。将里面Timestamp格式化成指定的pattern * * @param target * 目标map,就是通常是刚从数据库里查出来的 * @param pattern * 格式化规则。从自身取 */ @Deprecated public static void formatMapDate(Map target, String pattern) { for (Object item : target.entrySet()) { Map.Entry entry = (Map.Entry) item; if (entry.getValue() instanceof Timestamp) { SimpleDateFormat sdf = new SimpleDateFormat(pattern); entry.setValue(sdf.format((Timestamp) entry.getValue())); } } } /** * 日期转化为大写和小写 chenjiandong 20090609 add * * @param date * @param type * 1;2两种样式1为中文简体,2为繁体中文 * @return */ public static String dataToUpper(Date date, int type) { Calendar ca = Calendar.getInstance(); ca.setTime(date); int year = ca.get(Calendar.YEAR); int month = ca.get(Calendar.MONTH) + 1; int day = ca.get(Calendar.DAY_OF_MONTH); return numToUpper(year, type) + "年" + monthToUppder(month, type) + "月" + dayToUppder(day, type) + "日"; } /** * 将数字转化为大写 * * @param num * @param type * @return */ public static String numToUpper(int num, int type) {// type为样式1;2 String u1[] = { "〇", "一", "二", "三", "四", "五", "六", "七", "八", "九" }; String u2[] = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" }; char[] str = String.valueOf(num).toCharArray(); String rstr = ""; if (type == 1) { for (int i = 0; i < str.length; i++) { rstr = rstr + u1[Integer.parseInt(str[i] + "")]; } } else if (type == 2) { for (int i = 0; i < str.length; i++) { rstr = rstr + u2[Integer.parseInt(str[i] + "")]; } } return rstr; } /** * 将数字转化为大写 * * @param num * @return */ public static String numToUpper(int num) { String u1[] = { "〇", "一", "二", "三", "四", "五", "六", "日"}; char[] str = String.valueOf(num).toCharArray(); String rstr = ""; for (int i = 0; i < str.length; i++) { rstr = rstr + u1[Integer.parseInt(str[i] + "")]; } return rstr; } /** * 月转化为大写 * * @param month * @param type * @return */ public static String monthToUppder(int month, int type) { if (month < 10) { return numToUpper(month, type); } else if (month == 10) { return "十"; } else { return "十" + numToUpper((month - 10), type); } } /** * 日转化为大写 * * @param day * @param type * @return */ public static String dayToUppder(int day, int type) { if (day < 20) { return monthToUppder(day, type); } else { char[] str = String.valueOf(day).toCharArray(); if (str[1] == '0') { return numToUpper(Integer.parseInt(str[0] + ""), type) + "十"; } else { return numToUpper(Integer.parseInt(str[0] + ""), type) + "十" + numToUpper(Integer.parseInt(str[1] + ""), type); } } } /** * 获得当前日期与本周日相差的天数(视星期日为一周最后一天) * * @return */ public static int getDatePlus() { Calendar cd = Calendar.getInstance(); // 获得今天是一周的第几天,星期日是第一天。星期一是第二天...... int dayOfWeek = cd.get(Calendar.DAY_OF_WEEK); if (dayOfWeek == 1) { return 0; } else { return 8 - dayOfWeek; } } /** * * @param calendar * @return */ public static String getNextWeekDate(Calendar calendar) { String date = ""; switch (calendar.get(Calendar.DAY_OF_WEEK)) { case 1: date = "下周日 "; break; case 2: date = "下周一 "; break; case 3: date = "下周二 "; break; case 4: date = "下周三 "; break; case 5: date = "下周四 "; break; case 6: date = "下周五 "; break; case 7: date = "下周六 "; break; default: break; } return date; } public static boolean isToday(String datesString){ boolean isToday = false; Date date = strToDateCN_yyyy_MM_dd_HH_mm(datesString); Calendar calendar = Calendar.getInstance(); calendar.setTime(date); int day = calendar.get(Calendar.DAY_OF_YEAR); Calendar nowCalendar = Calendar.getInstance(); int nowDay = nowCalendar.get(Calendar.DAY_OF_YEAR); if (nowDay == day) { isToday = true; } return isToday; } }


FileUtil

public class FileUtil {
	public final static int IMG = 0;
	public final static int SOUND = 1;
	public final static int APK = 2;
	public final static int PPT = 3;
	public final static int XLS = 4;
	public final static int DOC = 5;
	public final static int PDF = 6;
	public final static int CHM = 7;
	public final static int TXT = 8;
	public final static int MOVIE = 9;
	
	
	
	
	public static String getBase64StringFromFile(String imageFile)
	{
		// 将图片文件转化为字节数组字符串,并对其进行Base64编码处理
		InputStream in = null;
		byte[] data = null;
		// 读取图片字节数组
		try
		{
			in = new FileInputStream(imageFile);
			data = new byte[in.available()];
			in.read(data);
			in.close();
		}
		catch (IOException e)
		{
			e.printStackTrace();
		}
		// 对字节数组Base64编码
		return Base64.encodeToString(data, Base64.DEFAULT);// 返回Base64编码过的字节数组字符
	}
	
	/**
	 * @param fileString base64
	 * @param filePath  保存路径,包含名字
	 * @return
	 */
	public static boolean saveFileByBase64(String fileString, String filePath) {
		// 对字节数组字符串进行Base64解码并生成图燿
		if (fileString == null) // 图像数据为空
			return false;
		byte[] data = Base64.decode(fileString, Base64.DEFAULT);
        saveFileByBytes(data, filePath);
        return true;
    }
	
	/**
	 * @param bitmap bitmap
	 * @param filePath  保存路径,包含名字
	 * @return
	 */
	public static boolean saveFileByBitmap(Bitmap bitmap, String filePath) {
		// 对字节数组字符串进行Base64解码并生成图燿
		if (bitmap == null) // 图像数据为空
			return false;
		byte[] data = ImageUtil.Bitmap2Bytes(bitmap);
        saveFileByBytes(data, filePath);
        return true;
    }
	
	
	/**
	 * @param fileString bytes[]
	 * @param filePath  保存路径,包含名字
	 * @return
	 */
	public static boolean saveFileByBytes(byte[] data,String filePath) {
		// 对字节数组字符串进行Base64解码并生成图燿
        BufferedOutputStream stream = null;
        File file = null;
        try {
        	 file = new File(filePath);
             if (!file.exists()) {
 				File file2 = new File(filePath.substring(0, filePath.lastIndexOf("/")+1));
 				file2.mkdirs();
 			}
            FileOutputStream fstream = new FileOutputStream(file);
            stream = new BufferedOutputStream(fstream);
            stream.write(data);
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        } finally {
            if (stream != null) {
                try {
                    stream.close();
                } catch (IOException e1) {
                    e1.printStackTrace();
                }
            }
        }
        return true;
    }
	
	/**
	 * imputStream 返回out
	 * @param inputStream
	 * @return
	 * @throws Exception
	 */
	public static boolean saveFileByInputStream(InputStream inputStream,
			String filePath) {
		File file = null;
		file = new File(filePath);
		if (!file.exists()) {
			File file2 = new File(filePath.substring(0,
					filePath.lastIndexOf("/") + 1));
			file2.mkdirs();
		}
		FileOutputStream outputStream = null;
		BufferedOutputStream bos = null;
		BufferedInputStream bis = null;
		
		try {
			bis = new BufferedInputStream(inputStream);
			outputStream = new FileOutputStream(file);
			bos = new BufferedOutputStream(outputStream);
			int byte_ =0 ;
			while ((byte_ = bis.read()) != -1)
				bos.write(byte_);
		} catch (IOException e) {
			e.printStackTrace();
			return false;
		} finally{
			try {
				bos.flush();
				bos.close();
				bis.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		return true;
	}
	
	
	/**
	 * 依据url得到名称
	 * @param url
	 * @return
	 */
	public static String getFileName(String url) {
		String fileName = "";
		if (url != null) {
			fileName = url.substring(url.lastIndexOf("/") + 1);
		}
		return fileName;
	}
	
	public static boolean renameFile(String path,String oldName,String newName){
		try {
			File file = null;
			file = new File(path + "/" + oldName);
			if (file.exists()) {
				file.renameTo(new File(path + "/" + newName));
			}
		} catch (Exception e) {
			e.printStackTrace();
			return false;
		}
		return true;
	}
	
	/**
	 * 辅助方法,删除文件
	 * @param path
	 * @param context
	 * @param imageName
	 */
	private void delFile(String path, Context context,
			String imageName) {
		File file = null;
		String real_path = "";
		try {
			if (hasSDCard()) {
				real_path = (path != null && path.startsWith("/") ? path : "/"
						+ path);
			} else {
				real_path = getPackagePath(context)
						+ (path != null && path.startsWith("/") ?

path : "/" + path); } file = new File(real_path, imageName); if (file != null) file.delete(); } catch (Exception e) { e.printStackTrace(); } } /** * 依据路径和名称都能够 * @param filePath * @return */ public static int getType(String filePath){ if (filePath == null) { return -1; } String end ; if(filePath.contains("/")){ File file = new File(filePath); if (!file.exists()) return -1; /* 取得扩展名 */ end = file .getName() .substring(file.getName().lastIndexOf(".") + 1, file.getName().length()).toLowerCase(); }else{ end = filePath.substring(filePath.lastIndexOf(".") + 1, filePath.length()).toLowerCase();; } end = end.trim().toLowerCase(); if (end.equals("m4a") || end.equals("mp3") || end.equals("mid") || end.equals("xmf") || end.equals("ogg") || end.equals("wav") || end.equals("amr")) { return SOUND; } else if (end.equals("3gp") || end.equals("mp4")) { return MOVIE; } else if (end.equals("jpg") || end.equals("gif") || end.equals("png") || end.equals("jpeg") || end.equals("bmp")) { return IMG; } else if (end.equals("apk")) { return APK; } else if (end.equals("ppt")) { return PPT; } else if (end.equals("xls")) { return XLS; } else if (end.equals("doc")) { return DOC; } else if (end.equals("pdf")) { return PDF; } else if (end.equals("chm")) { return CHM; } else if (end.equals("txt")) { return TXT; } else { return -1; } } public static Intent openFile(String filePath) { if (filePath == null) { return null; } File file = new File(filePath); if (!file.exists()) return null; /* 取得扩展名 */ String end = file .getName() .substring(file.getName().lastIndexOf(".") + 1, file.getName().length()).toLowerCase(); end = end.trim().toLowerCase(); // System.out.println(end); /* 依扩展名的类型决定MimeType */ if (end.equals("m4a") || end.equals("mp3") || end.equals("mid") || end.equals("xmf") || end.equals("ogg") || end.equals("wav") || end.equals("amr")) { return getAudioFileIntent(filePath); } else if (end.equals("3gp") || end.equals("mp4")) { return getAudioFileIntent(filePath); } else if (end.equals("jpg") || end.equals("gif") || end.equals("png") || end.equals("jpeg") || end.equals("bmp")) { return getImageFileIntent(filePath); } else if (end.equals("apk")) { return getApkFileIntent(filePath); } else if (end.equals("ppt")) { return getPptFileIntent(filePath); } else if (end.equals("xls")) { return getExcelFileIntent(filePath); } else if (end.equals("doc")) { return getWordFileIntent(filePath); } else if (end.equals("pdf")) { return getPdfFileIntent(filePath); } else if (end.equals("chm")) { return getChmFileIntent(filePath); } else if (end.equals("txt")) { return getTextFileIntent(filePath, false); } else { return getAllIntent(filePath); } } // android获取一个用于打开APK文件的intent public static Intent getAllIntent(String param) { Intent intent = new Intent(); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setAction(android.content.Intent.ACTION_VIEW); Uri uri = Uri.fromFile(new File(param)); intent.setDataAndType(uri, "*/*"); return intent; } // Android获取一个用于打开APK文件的intent public static Intent getApkFileIntent(String param) { Intent intent = new Intent(); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setAction(android.content.Intent.ACTION_VIEW); Uri uri = Uri.fromFile(new File(param)); intent.setDataAndType(uri, "application/vnd.android.package-archive"); return intent; } // Android获取一个用于打开VIDEO文件的intent public static Intent getVideoFileIntent(String param) { Intent intent = new Intent("android.intent.action.VIEW"); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); intent.putExtra("oneshot", 0); intent.putExtra("configchange", 0); Uri uri = Uri.fromFile(new File(param)); intent.setDataAndType(uri, "video/*"); return intent; } // Android获取一个用于打开AUDIO文件的intent public static Intent getAudioFileIntent(String param) { Intent intent = new Intent("android.intent.action.VIEW"); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); intent.putExtra("oneshot", 0); intent.putExtra("configchange", 0); Uri uri = Uri.fromFile(new File(param)); intent.setDataAndType(uri, "audio/*"); return intent; } // Android获取一个用于打开html文件的intent public static Intent getHtmlFileIntent(String param) { Uri uri = Uri.parse(param).buildUpon() .encodedAuthority("com.android.htmlfileprovider") .scheme("content").encodedPath(param).build(); Intent intent = new Intent("android.intent.action.VIEW"); intent.setDataAndType(uri, "text/html"); return intent; } // Android获取一个用于打开图片文件的intent public static Intent getImageFileIntent(String param) { Intent intent = new Intent("android.intent.action.VIEW"); intent.addCategory("android.intent.category.DEFAULT"); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); Uri uri = Uri.fromFile(new File(param)); intent.setDataAndType(uri, "image/*"); return intent; } // Android获取一个用于打开PPT文件的intent public static Intent getPptFileIntent(String param) { Intent intent = new Intent("android.intent.action.VIEW"); intent.addCategory("android.intent.category.DEFAULT"); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); Uri uri = Uri.fromFile(new File(param)); intent.setDataAndType(uri, "application/vnd.ms-powerpoint"); return intent; } // Android获取一个用于打开Excel文件的intent public static Intent getExcelFileIntent(String param) { Intent intent = new Intent("android.intent.action.VIEW"); intent.addCategory("android.intent.category.DEFAULT"); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); Uri uri = Uri.fromFile(new File(param)); intent.setDataAndType(uri, "application/vnd.ms-excel"); return intent; } // Android获取一个用于打开Word文件的intent public static Intent getWordFileIntent(String param) { Intent intent = new Intent("android.intent.action.VIEW"); intent.addCategory("android.intent.category.DEFAULT"); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); Uri uri = Uri.fromFile(new File(param)); intent.setDataAndType(uri, "application/msword"); return intent; } // Android获取一个用于打开CHM文件的intent public static Intent getChmFileIntent(String param) { Intent intent = new Intent("android.intent.action.VIEW"); intent.addCategory("android.intent.category.DEFAULT"); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); Uri uri = Uri.fromFile(new File(param)); intent.setDataAndType(uri, "application/x-chm"); return intent; } // Android获取一个用于打开文本文件的intent public static Intent getTextFileIntent(String param, boolean paramBoolean) { Intent intent = new Intent("android.intent.action.VIEW"); intent.addCategory("android.intent.category.DEFAULT"); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); if (paramBoolean) { Uri uri1 = Uri.parse(param); intent.setDataAndType(uri1, "text/plain"); } else { Uri uri2 = Uri.fromFile(new File(param)); intent.setDataAndType(uri2, "text/plain"); } return intent; } // Android获取一个用于打开PDF文件的intent public static Intent getPdfFileIntent(String param) { Intent intent = new Intent("android.intent.action.VIEW"); intent.addCategory("android.intent.category.DEFAULT"); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); Uri uri = Uri.fromFile(new File(param)); intent.setDataAndType(uri, "application/pdf"); return intent; } /** * 推断是否有sdcard * * @return */ public static boolean hasSDCard() { boolean b = false; if (Environment.MEDIA_MOUNTED.equals(Environment .getExternalStorageState())) { b = true; } return b; } /** * 得到sdcard路径 * * @return */ public static String getExtPath() { String path = ""; if (hasSDCard()) { path = Environment.getExternalStorageDirectory().getPath(); } return path; } /** * 得到/data/data/com.d3studio.together文件夹 * * @param mActivity * @return */ public static String getPackagePath(Context mActivity) { return mActivity.getFilesDir().toString(); } /** * 依据url得到图片 * * @param url * @return */ public static String getImageName(String url) { String imageName = ""; if (url != null) { imageName = url.substring(url.lastIndexOf("/") + 1); } return imageName; } }


InputTools

public class InputTools {

	// 隐藏虚拟键盘
	public static void HideKeyboard(View v) {
		InputMethodManager imm = (InputMethodManager) v.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
		if (imm.isActive()) {
			imm.hideSoftInputFromWindow(v.getApplicationWindowToken(), 0);
		}
	}

	// 显示虚拟键盘
	public static void ShowKeyboard(View v) {
		InputMethodManager imm = (InputMethodManager) v.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
		imm.showSoftInput(v, InputMethodManager.SHOW_FORCED);
	}

	// 强制显示或者关闭系统键盘
	public static void KeyBoard(final EditText txtSearchKey, final String status) {
		Timer timer = new Timer();
		timer.schedule(new TimerTask() {
			@Override
			public void run() {
				InputMethodManager m = (InputMethodManager) txtSearchKey.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
				if (status.equals("open")) {
					m.showSoftInput(txtSearchKey,InputMethodManager.SHOW_FORCED);
				} else {
					m.hideSoftInputFromWindow(txtSearchKey.getWindowToken(), 0);
				}
			}
		}, 300);
	}

	// 通过定时器强制隐藏虚拟键盘
	public static void TimerHideKeyboard(final View v) {
		Timer timer = new Timer();
		timer.schedule(new TimerTask() {
			@Override
			public void run() {
				InputMethodManager imm = (InputMethodManager) v.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
				if (imm.isActive()) {
					imm.hideSoftInputFromWindow(v.getApplicationWindowToken(),0);
				}
			}
		}, 10);
	}

	// 输入法是否显示着
	public static boolean KeyBoard(EditText edittext) {
		boolean bool = false;
		InputMethodManager imm = (InputMethodManager) edittext.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
		if (imm.isActive()) {
			bool = true;
		}
		return bool;
	}
}










以上是关于技术总结--android篇--工具类总结的主要内容,如果未能解决你的问题,请参考以下文章

android开发工具类总结

Android弹出Toast工具类总结

Android技术总结1

Android混淆总结篇

179 01 Android 零基础入门 03 Java常用工具类02 Java包装类 03 包装类总结 01 Java中的包装类总结

2022年Android Jetpack架构组件总结篇,最强技术实现