`
zheyiw
  • 浏览: 1021970 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

安卓工具类一个,自己多个项目总结下来的,分享给大家

sql 
阅读更多


/**
 * 工具类:包括最常用的字符串为空的检验,时间的格式化,数字的格式化,取精度,sql语句拼接等
 * 
 * @author 包子大叔
 * @time 2013-8-29 上午10:40:57
 */
public class Util {

	/**
	 * 检查字符串是否是空对象或空字符串
	 * 
	 * @param str
	 * @return 为空返回true,不为空返回false
	 */
	public static boolean isNull(String str) {
		if (null == str || "".equals(str) || "null".equalsIgnoreCase(str)) {
			return true;
		} else {
			return false;
		}
	}

	/*
	 * px:像素。 in:英寸。 mm:毫米。 pt:磅。 dp:与密度无关的像素,基于160dpi(每英寸的像素数)屏幕(尺寸适应屏幕密度)。
	 * sp:与比例无关的像素(这种尺寸支持用户调整大小,适合在字体中使用)。
	 */

	/**
	 * 根据手机的分辨率从 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);
	}

	// --------------------------------------time--------------------------------------//
	/**
	 * 获取当前时间, 格式"yyyy-MM-dd"
	 * 
	 * @return
	 */
	@SuppressLint("SimpleDateFormat")
	public static String timeFormatDateShort(Date d) {
		return new SimpleDateFormat("yyyy-MM-dd").format(d);
	}

	/**
	 * 获取当前时间, 格式"yyyy-MM-dd HH:mm:ss"
	 * 
	 * @return
	 */
	public static String timeFormatTime() {
		Date d = new Date();
		return timeFormat(d);
	}

	/**
	 * 获取当前时间, 格式"yyyy-MM-dd 00:00:00"
	 * 
	 * @return
	 */
	@SuppressLint("SimpleDateFormat")
	public static String timeFormatDateBegin(Date d) {
		String str = new SimpleDateFormat("yyyy-MM-dd").format(d);
		return str + " 00:00:00";
	}

	/**
	 * 获取当前时间, 格式"yyyy-MM-dd 23:59:59"
	 * 
	 * @return
	 */
	@SuppressLint("SimpleDateFormat")
	public static String timeFormatDateEnd(Date d) {
		String str = new SimpleDateFormat("yyyy-MM-dd").format(d);
		return str + " 23:59:59";
	}

	/**
	 * 获取当前时间, 格式"yyyy-MM-dd HH:mm:ss"
	 * 
	 * @return
	 */
	@SuppressLint("SimpleDateFormat")
	public static String timeFormat(Date d) {
		return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(d);
	}

	/**
	 * 获取当前时间, 格式"yyyy-MM-dd HH:mm:ss"
	 * 
	 * @param fomatStr
	 *            格式化字符串
	 * @return
	 */
	@SuppressLint("SimpleDateFormat")
	public static String timeFormat(String fomatStr) {
		return new SimpleDateFormat(fomatStr).format(new Date());
	}

	/**
	 * 获取当前时间, 格式"yyyy-MM-dd HH:mm:ss"
	 * 
	 * @param fomatStr
	 *            格式化字符串
	 * @return
	 */
	@SuppressLint("SimpleDateFormat")
	public static String timeFormat(String fomatStr, Date d) {
		return new SimpleDateFormat(fomatStr).format(d);
	}

	// ------------------------------------------Math-------------------------------------//
	/**
	 * 金钱格式化,取到小数点后两位,例如:0.00
	 * 
	 * @param money
	 * @return
	 */
	public static String moneyFormat(double money) {
		DecimalFormat df = new DecimalFormat("0.00");
		return df.format(money);
	}

	/**
	 * 去掉多余的.与0
	 * 
	 * @param s
	 *            数字型字符串
	 * @return
	 */
	public static String subZeroAndDot(String s) {
		if (s.indexOf(".") > 0) {
			s = s.replaceAll("0+?$", "");// 去掉多余的0
			s = s.replaceAll("[.]$", "");// 如最后一位是.则去掉
		}
		return s;
	}

	/**
	 * 去掉多余的.与0
	 * 
	 * @param d
	 * @return
	 */
	public static String subZeroAndDot(double d) {
		return subZeroAndDot(d + "");
	}

	/**
	 * 取数值字符串的整数部分
	 */
	public static int toInt(String strNumber) {
		return (int) Math.floor(toDouble(strNumber));
	}

	public static double toDouble(String strNumber) {
		try {
			return Double.parseDouble(strNumber);
		} catch (Exception e) {
			return 0;
		}
	}

	/**
	 * 精确到两位小数位
	 * 
	 * @param strNumber
	 * @return
	 */
	public static String getRound2(String strNumber) {
		try {

			double number = Double.parseDouble(strNumber);
			return getRound2(number) + "";
		} catch (Exception e) {
			return "0.00";
		}
	}

	/**
	 * 精确到两位小数位
	 * 
	 * @param strNumber
	 * @return
	 */
	public static double getRound2(double number) {
		return Arith.round(number, 2);
	}

	/**
	 * 精确到小数点后N,四舍五入
	 * 
	 * @param number
	 * @param n
	 * @return
	 */
	public static double getRound(double number, int n) {
		return Arith.round(number, n);
	}

	// ----------------------------------------sql--------------------------------------//
	/**
	 * 对字符串类型的参数进行格式化, 将会自动给值添加引号, "abc"-->"'abc'" <br>
	 * 本方法会将字符串内的 [单引号] 格式化为 [双引号] 以防止数据库报错, "a'b'c"-->"'a''b''c'"
	 * 
	 * @param str
	 *            "abc"
	 * @return "'abc'"
	 */
	public static String sqlParamFomat(String str) {
		if (null != str) {
			String tmp = str.replace("'", "''");
			return "'" + tmp + "'";
		} else {
			return "null";
		}
	}

	/**
	 * 传入指定格式的sql字符串和参数列表,返回拼接好的sql语句 例如: <br>
	 * sql: select * from stock where companyid={0}<br>
	 * 其中{0}将被参数列表中的第0个参数替换<br>
	 * 本函数会对参数进行参数化处理,请优先使用本函数拼接sql <br>
	 * 目前支持的参数类型: String,Integer,Long,Float,Double
	 * 
	 * @param sqlStr
	 * @param arr
	 * @return
	 */
	public static String sqlCreate(String sqlStr, Object[] arr) {
		String newSql = sqlStr;
		int len = arr.length;
		for (int i = 0; i < len; i++) {
			Object obj = arr[i];
			if (obj instanceof String) {
				// 字符串要进行格式化
				String param = (String) obj;
				newSql = sqlStr.replace("{" + i + "}", sqlParamFomat(param));
			}
			if ((obj instanceof Integer) || (obj instanceof Long)
					|| (obj instanceof Float) || (obj instanceof Double)) {
				newSql = sqlStr.replace("{" + i + "}", obj + "");
			}
			if ((obj instanceof Calendar)) {
				Calendar param = (Calendar) obj;
				newSql = sqlStr.replace("{" + i + "}",
						timeFormat(param.getTime()));
			}
			if ((obj instanceof Date)) {
				Date param = (Date) obj;
				newSql = sqlStr.replace("{" + i + "}", timeFormat(param));
			}
		}
		return newSql;
	}

	public static String sqlCreate(String sqlStr, String[] arr) {
		String newSql = sqlStr;
		int len = arr.length;
		for (int i = 0; i < len; i++) {
			newSql = sqlStr.replace("{" + i + "}", sqlParamFomat(arr[i]));
		}
		return newSql;
	}

	// ----------------------------------------other--------------------------------------//
	/**
	 * 检测网络连接是否可用
	 * 
	 * @param ctx
	 * @return true 可用; false 不可用
	 */
	public static boolean isNetworkAvailable(Context ctx) {
		ConnectivityManager cm = (ConnectivityManager) ctx
				.getSystemService(Context.CONNECTIVITY_SERVICE);
		if (cm == null) {
			return false;
		}
		NetworkInfo activeNetInfo = cm.getActiveNetworkInfo();
		if (activeNetInfo != null) {
			if (activeNetInfo.isAvailable()) {
				return true;
			} else {
				return false;
			}
		}
		return false;
	}

}

分享到:
评论

相关推荐

    android各种工具类

    总结来说,“android各种工具类”涵盖了Android开发中的多个关键领域,理解并熟练掌握这些工具类的使用,将极大地提升开发效率和应用质量。在实际项目中,开发者还应关注性能优化、内存管理、异常处理等方面,以确保...

    安卓工具类

    在安卓应用开发中,工具类(Utility Class)是开发者经常使用的代码模块,它们封装了一些通用功能,以便在多个地方重复使用,提高代码的复用性和可维护性。本篇文章将详细探讨标题中提到的两个工具类:...

    Android快速开发工具类

    总结,"Android快速开发工具类"是Android开发者的重要辅助,它整合了开发过程中常见的实用功能,让开发者能够更加专注于业务逻辑,而不是基础功能的实现。这个工具类的使用,不仅可以提高开发效率,还可以优化代码...

    安卓版本更新工具类

    总结来说,`UpdateManager`是一个集版本检测、下载管理和进度通知于一体的工具类,对于安卓应用的持续维护和用户体验提升具有重要意义。通过合理的接口设计和网络操作,它能够帮助开发者轻松地实现应用的自动化更新...

    优化版动态权限申请工具类.zip

    4. **多权限请求**:在某些情况下,应用可能需要多个权限,工具类会支持一次申请多个权限的功能。 5. **权限申请结果处理**:在用户对权限请求做出响应后,`onRequestPermissionsResult()`回调会被触发,工具类会在...

    简单Dialog工具类

    总结,"简单Dialog工具类"是Android开发中的实用工具,通过封装提高了开发效率和代码质量。了解并合理运用此类工具,可以帮助开发者更专注于核心业务逻辑,同时保证了应用的用户体验。在实际项目中,可以根据需求...

    Android 检测升级并下载安装工具类

    总结来说,`UpdateAppUtils`工具类是Android开发中的一个重要模块,它集成了网络通信、文件操作、权限管理等多个方面的技术,旨在简化应用程序的更新流程,提高用户体验。开发者在使用时,需根据实际需求对其进行...

    Android-EasyCommonUtils快速搭建项目时常用的工具类集合

    "Android-EasyCommonUtils"正是这样一款集合了多种常用功能的工具类库,它涵盖了线程池管理、Handler通信机制、消息提示以及日志打印等多个方面,为开发者提供了一站式的解决方案。 首先,线程池管理是Android应用...

    navigationbar安卓头部工具类

    总结起来,`navigationBar安卓头部工具类`是一个实用的Android开发组件,它通过Builder模式实现了链式调用,简化了头部区域的设置过程;同时,该工具类兼容各种布局,解决了不同布局的适配问题,并且支持沉浸式状态...

    Android 多线程网络图片下载工具类

    本文将详细介绍如何构建一个Android多线程网络图片下载工具类,包括其核心原理、关键实现以及缓存策略。 一、多线程下载原理 在Android中,为了防止UI线程被阻塞,网络请求通常在后台线程执行。多线程下载则是将大...

    Android 总结项目

    本总结项目涵盖了多个关键知识点,包括`PopupWindow`、对话框、元素切换场景动画、图片打点技术、React Native(RN)与Android的交互,以及美团界面的实现。下面将对这些主题进行详细解释。 1. `PopupWindow`: `...

    android导出实体表格工具类

    在Android开发中,有时我们需要将数据以表格的形式导出,供用户查看或进一步处理。...这个工具类的实现涉及了数据结构、文件I/O、权限管理和用户交互等多个方面,对于提升Android应用的数据处理能力具有重要意义。

    Android AlarmManager实现多个定时重复提醒

    总结来说,`AlarmManager`是Android系统提供的一种强大的定时任务管理工具,通过合理的配置和使用,可以实现各种复杂的定时任务,包括多个定时重复提醒。在实际开发中,要注意优化提醒的触发时机,避免过于频繁地...

    android 工具类

    总结,Android工具类是提高开发效率的关键,它们包含了各种实用功能,涵盖了网络检查、图片缓存和系统工具等多个方面。合理的工具类设计可以使代码结构更清晰,减少重复工作,提升应用的性能和用户体验。在实际开发...

    fresco工具类,可替换框架。

    标签"工具类fresco"表明在这个项目中,Fresco 被封装成了工具类,以便于在整个项目中统一管理和使用。这样做可以简化代码,提高代码复用性,并使得团队成员更容易理解和维护图像加载部分的代码。 总结来说,Fresco ...

    Android-CakeUtility-CakePHP实用工具类

    总结起来,"Android-CakeUtility"项目为Android开发者提供了从 CakePHP 框架中提取的一系列实用工具类,涵盖了字符串处理、散列、安全性和XML操作等多个方面,极大地提升了代码的灵活性和效率。通过学习和使用这个...

    ijkplayer工具类

    ijkplayer工具类是Android开发中常见的一种开源媒体播放器组件,它基于FFmpeg库,提供了高效、稳定且功能丰富的视频和音频播放能力。在Android应用开发中,ijkplayer经常被用来替代系统默认的MediaPlayer,因为它...

    基于Android Studio开发的旅游记录与分享APP源码,Android旅游路线记录与分享APP源码

    综上所述,这个基于Android Studio的旅游记录与分享APP涉及了众多Android开发的关键技术,包括地图集成、位置服务、数据存储、网络通信以及用户体验设计等多个方面,对于学习和提升Android开发能力具有很高的参考...

    安卓EditText输入框相关-AndroidTextViewEditText插入图片工具类包装已包装好工具类.rar

    总结来说,Android开发中在EditText中插入图片涉及到自定义View、图片处理、文本操作等多个技术点,通过提供的工具类可以简化这部分工作,但仍然需要根据项目实际需求进行适配和调整。如果你打算实现这样的功能,...

    本人的工具类集成APP

    总结起来,这个项目是一个包含多种常见服务集成的Android工具集,适合快速搭建具备支付、社交登录、地图服务和自定义UI功能的应用。开发者通过封装这些功能,降低了其他开发者在类似项目中重复工作的难度,提高了...

Global site tag (gtag.js) - Google Analytics