/**
* 工具类:包括最常用的字符串为空的检验,时间的格式化,数字的格式化,取精度,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开发中的多个关键领域,理解并熟练掌握这些工具类的使用,将极大地提升开发效率和应用质量。在实际项目中,开发者还应关注性能优化、内存管理、异常处理等方面,以确保...
在安卓应用开发中,工具类(Utility Class)是开发者经常使用的代码模块,它们封装了一些通用功能,以便在多个地方重复使用,提高代码的复用性和可维护性。本篇文章将详细探讨标题中提到的两个工具类:...
总结,"Android快速开发工具类"是Android开发者的重要辅助,它整合了开发过程中常见的实用功能,让开发者能够更加专注于业务逻辑,而不是基础功能的实现。这个工具类的使用,不仅可以提高开发效率,还可以优化代码...
总结来说,`UpdateManager`是一个集版本检测、下载管理和进度通知于一体的工具类,对于安卓应用的持续维护和用户体验提升具有重要意义。通过合理的接口设计和网络操作,它能够帮助开发者轻松地实现应用的自动化更新...
4. **多权限请求**:在某些情况下,应用可能需要多个权限,工具类会支持一次申请多个权限的功能。 5. **权限申请结果处理**:在用户对权限请求做出响应后,`onRequestPermissionsResult()`回调会被触发,工具类会在...
总结,"简单Dialog工具类"是Android开发中的实用工具,通过封装提高了开发效率和代码质量。了解并合理运用此类工具,可以帮助开发者更专注于核心业务逻辑,同时保证了应用的用户体验。在实际项目中,可以根据需求...
总结来说,`UpdateAppUtils`工具类是Android开发中的一个重要模块,它集成了网络通信、文件操作、权限管理等多个方面的技术,旨在简化应用程序的更新流程,提高用户体验。开发者在使用时,需根据实际需求对其进行...
"Android-EasyCommonUtils"正是这样一款集合了多种常用功能的工具类库,它涵盖了线程池管理、Handler通信机制、消息提示以及日志打印等多个方面,为开发者提供了一站式的解决方案。 首先,线程池管理是Android应用...
总结起来,`navigationBar安卓头部工具类`是一个实用的Android开发组件,它通过Builder模式实现了链式调用,简化了头部区域的设置过程;同时,该工具类兼容各种布局,解决了不同布局的适配问题,并且支持沉浸式状态...
本文将详细介绍如何构建一个Android多线程网络图片下载工具类,包括其核心原理、关键实现以及缓存策略。 一、多线程下载原理 在Android中,为了防止UI线程被阻塞,网络请求通常在后台线程执行。多线程下载则是将大...
本总结项目涵盖了多个关键知识点,包括`PopupWindow`、对话框、元素切换场景动画、图片打点技术、React Native(RN)与Android的交互,以及美团界面的实现。下面将对这些主题进行详细解释。 1. `PopupWindow`: `...
在Android开发中,有时我们需要将数据以表格的形式导出,供用户查看或进一步处理。...这个工具类的实现涉及了数据结构、文件I/O、权限管理和用户交互等多个方面,对于提升Android应用的数据处理能力具有重要意义。
总结来说,`AlarmManager`是Android系统提供的一种强大的定时任务管理工具,通过合理的配置和使用,可以实现各种复杂的定时任务,包括多个定时重复提醒。在实际开发中,要注意优化提醒的触发时机,避免过于频繁地...
总结,Android工具类是提高开发效率的关键,它们包含了各种实用功能,涵盖了网络检查、图片缓存和系统工具等多个方面。合理的工具类设计可以使代码结构更清晰,减少重复工作,提升应用的性能和用户体验。在实际开发...
标签"工具类fresco"表明在这个项目中,Fresco 被封装成了工具类,以便于在整个项目中统一管理和使用。这样做可以简化代码,提高代码复用性,并使得团队成员更容易理解和维护图像加载部分的代码。 总结来说,Fresco ...
总结起来,"Android-CakeUtility"项目为Android开发者提供了从 CakePHP 框架中提取的一系列实用工具类,涵盖了字符串处理、散列、安全性和XML操作等多个方面,极大地提升了代码的灵活性和效率。通过学习和使用这个...
ijkplayer工具类是Android开发中常见的一种开源媒体播放器组件,它基于FFmpeg库,提供了高效、稳定且功能丰富的视频和音频播放能力。在Android应用开发中,ijkplayer经常被用来替代系统默认的MediaPlayer,因为它...
综上所述,这个基于Android Studio的旅游记录与分享APP涉及了众多Android开发的关键技术,包括地图集成、位置服务、数据存储、网络通信以及用户体验设计等多个方面,对于学习和提升Android开发能力具有很高的参考...
总结来说,Android开发中在EditText中插入图片涉及到自定义View、图片处理、文本操作等多个技术点,通过提供的工具类可以简化这部分工作,但仍然需要根据项目实际需求进行适配和调整。如果你打算实现这样的功能,...
总结起来,这个项目是一个包含多种常见服务集成的Android工具集,适合快速搭建具备支付、社交登录、地图服务和自定义UI功能的应用。开发者通过封装这些功能,降低了其他开发者在类似项目中重复工作的难度,提高了...