StringUtils
import java.net.URLEncoder;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Hashtable;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* <Pre>
* String工具类,提供字符串的验证方法
* </Pre>
*
* @author cxy
* @version 1.0
*/
public class StringUtils {
/**
* 验证手机号码是否正确
*
* @param str 传入手机号码
* @return
*/
public static boolean isPhone(String str) {
Pattern pattern = Pattern.compile("^((13[0-9])|(15[^4,\\D])|(17[0-9])|(14[0-9])|(18[0,0-9]))\\d{8}$");
Matcher m = pattern.matcher(str);
return m.matches();
}
/**
* 根据身份证验证男女
*
* @param idCard 身份证
* @return
*/
public static String checkSex(String idCard) {
String sex = idCard.substring(16, 17);
if (Integer.parseInt(sex) % 2 == 0) {
sex = "女";
} else {
sex = "男";
}
return sex;
}
public static String checkBrithday(String idCard) {
String birthday = null;
String YYYY = idCard.substring(6, 10);
String MM = idCard.substring(10, 12);
String DD = idCard.substring(12, 14);
return YYYY + "-" + MM + "-" + DD;
}
/*********************************** 身份证验证开始 ****************************************/
/**
* 身份证号码验证
* 1、号码的结构
* 公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。排列顺序从左至右依次为:六位数字地址码,
* 八位数字出生日期码,三位数字顺序码和一位数字校验码。
* 2、地址码(前六位数)
* 表示编码对象常住户口所在县(市、旗、区)的行政区划代码,按GB/T2260的规定执行。
* 3、出生日期码(第七位至十四位)
* 表示编码对象出生的年、月、日,按GB/T7408的规定执行,年、月、日代码之间不用分隔符。
* 4、顺序码(第十五位至十七位)
* 表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号,
* 顺序码的奇数分配给男性,偶数分配给女性。
* 5、校验码(第十八位数)
* (1)十七位数字本体码加权求和公式 S = Sum(Ai * Wi), i = 0, ... , 16 ,先对前17位数字的权求和
* Ai:表示第i位置上的身份证号码数字值 Wi:表示第i位置上的加权因子 Wi: 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4
* 2 (2)计算模 Y = mod(S, 11) (3)通过模得到对应的校验码 Y: 0 1 2 3 4 5 6 7 8 9 10 校验码: 1 0
* X 9 8 7 6 5 4 3 2
*/
/**
* 功能:身份证的有效验证
*
* @param IDStr 身份证号
* @return 有效:返回"" 无效:返回String信息
* @throws ParseException
*/
@SuppressWarnings("unchecked")
public static String iDCardValidate(String IDStr) throws ParseException {
String errorInfo = "";// 记录错误信息
String[] ValCodeArr = {"1", "0", "x", "9", "8", "7", "6", "5", "4",
"3", "2"};
String[] Wi = {"7", "9", "10", "5", "8", "4", "2", "1", "6", "3", "7",
"9", "10", "5", "8", "4", "2"};
String Ai = "";
// ================ 号码的长度 15位或18位 ================
if (IDStr.length() != 15 && IDStr.length() != 18) {
errorInfo = "身份证号码长度应该为15位或18位。";
return errorInfo;
}
// =======================(end)========================
// ================ 数字 除最后以为都为数字 ================
if (IDStr.length() == 18) {
Ai = IDStr.substring(0, 17);
} else if (IDStr.length() == 15) {
Ai = IDStr.substring(0, 6) + "19" + IDStr.substring(6, 15);
}
if (isNumeric(Ai) == false) {
errorInfo = "身份证15位号码都应为数字 ; 18位号码除最后一位外,都应为数字。";
return errorInfo;
}
// =======================(end)========================
// ================ 出生年月是否有效 ================
String strYear = Ai.substring(6, 10);// 年份
String strMonth = Ai.substring(10, 12);// 月份
String strDay = Ai.substring(12, 14);// 月份
if (isDate(strYear + "-" + strMonth + "-" + strDay) == false) {
errorInfo = "身份证生日无效。";
return errorInfo;
}
GregorianCalendar gc = new GregorianCalendar();
SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd");
if ((gc.get(Calendar.YEAR) - Integer.parseInt(strYear)) > 150
|| (gc.getTime().getTime() - s.parse(
strYear + "-" + strMonth + "-" + strDay).getTime()) < 0) {
errorInfo = "身份证生日不在有效范围。";
return errorInfo;
}
if (Integer.parseInt(strMonth) > 12 || Integer.parseInt(strMonth) == 0) {
errorInfo = "身份证月份无效";
return errorInfo;
}
if (Integer.parseInt(strDay) > 31 || Integer.parseInt(strDay) == 0) {
errorInfo = "身份证日期无效";
return errorInfo;
}
// =====================(end)=====================
// ================ 地区码时候有效 ================
Hashtable h = getAreaCode();
if (h.get(Ai.substring(0, 2)) == null) {
errorInfo = "身份证地区编码错误。";
return errorInfo;
}
// ==============================================
// ================ 判断最后一位的值 ================
int TotalmulAiWi = 0;
for (int i = 0; i < 17; i++) {
TotalmulAiWi = TotalmulAiWi
+ Integer.parseInt(String.valueOf(Ai.charAt(i)))
* Integer.parseInt(Wi[i]);
}
int modValue = TotalmulAiWi % 11;
String strVerifyCode = ValCodeArr[modValue];
Ai = Ai + strVerifyCode;
if (IDStr.length() == 18) {
if (Ai.equalsIgnoreCase(IDStr) == false) {
errorInfo = "身份证无效,不是合法的身份证号码";
return errorInfo;
}
} else {
return "";
}
// =====================(end)=====================
return "";
}
/**
* 功能:设置地区编码
*
* @return Hashtable 对象
*/
@SuppressWarnings("unchecked")
private static Hashtable getAreaCode() {
Hashtable hashtable = new Hashtable();
hashtable.put("11", "北京");
hashtable.put("12", "天津");
hashtable.put("13", "河北");
hashtable.put("14", "山西");
hashtable.put("15", "内蒙古");
hashtable.put("21", "辽宁");
hashtable.put("22", "吉林");
hashtable.put("23", "黑龙江");
hashtable.put("31", "上海");
hashtable.put("32", "江苏");
hashtable.put("33", "浙江");
hashtable.put("34", "安徽");
hashtable.put("35", "福建");
hashtable.put("36", "江西");
hashtable.put("37", "山东");
hashtable.put("41", "河南");
hashtable.put("42", "湖北");
hashtable.put("43", "湖南");
hashtable.put("44", "广东");
hashtable.put("45", "广西");
hashtable.put("46", "海南");
hashtable.put("50", "重庆");
hashtable.put("51", "四川");
hashtable.put("52", "贵州");
hashtable.put("53", "云南");
hashtable.put("54", "西藏");
hashtable.put("61", "陕西");
hashtable.put("62", "甘肃");
hashtable.put("63", "青海");
hashtable.put("64", "宁夏");
hashtable.put("65", "新疆");
hashtable.put("71", "台湾");
hashtable.put("81", "香港");
hashtable.put("82", "澳门");
hashtable.put("91", "国外");
return hashtable;
}
/**
* 功能:判断字符串是否为数字
*
* @param str
* @return
*/
private static boolean isNumeric(String str) {
Pattern pattern = Pattern.compile("[0-9]*");
Matcher isNum = pattern.matcher(str);
if (isNum.matches()) {
return true;
} else {
return false;
}
}
/**
* 功能:判断字符串是否为空
*
* @param str
* @return
*/
public static boolean isBlank(String str)
{
if(str ==null)
return true ;
if("".equals(str))
return true ;
if("".equals(str.trim()))
return true ;
return false ;
}
/**
* 功能:判断字符串是否不为空
*
* @param str
* @return
*/
public static boolean isNotBlank(String str)
{
if(str ==null)
return false ;
if("".equals(str))
return false ;
if("".equals(str.trim()))
return false ;
return true ;
}
/**
* 功能:判断字符串是否为日期格式
*
* @param strDate
* @return
*/
public static boolean isDate(String strDate) {
Pattern pattern = Pattern
.compile("^((\\d{2}(([02468][048])|([13579][26]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])))))|(\\d{2}(([02468][1235679])|([13579][01345789]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))(\\s(((0?[0-9])|([1-2][0-3]))\\:([0-5]?[0-9])((\\s)|(\\:([0-5]?[0-9])))))?$");
Matcher m = pattern.matcher(strDate);
if (m.matches()) {
return true;
} else {
return false;
}
}
public static String toURLEncoded(String paramString) {
if (paramString == null || paramString.equals("")) {
return "";
}
try
{
String str = new String(paramString.getBytes(), "UTF-8");
str = URLEncoder.encode(str, "UTF-8");
return str;
}
catch (Exception localException)
{
}
return "";
}
/**
* 字符串转整数
*
* @param str
* @param defValue
* @return
*/
public static int toInt(String str, int defValue) {
try {
return Integer.parseInt(str);
} catch (Exception e) {
}
return defValue;
}
/**
* 字符串转布尔值
*
* @param b
* @return 转换异常返回 false
*/
public static boolean toBool(String b) {
try {
return Boolean.parseBoolean(b);
} catch (Exception e) {
}
return false;
}
/**
* 判断是否为整数
*
* @param str
* 传入的字符串
* @return 是整数返回true,否则返回false
*/
public static boolean isInteger(String str) {
Pattern pattern = Pattern.compile("^[-\\+]?[\\d]*$");
return pattern.matcher(str).matches();
}
/**
* 判断是否为浮点数,包括double和float
*
* @param str
* 传入的字符串
* @return 是浮点数返回true,否则返回false
*/
public static boolean isDouble(String str) {
Pattern pattern = Pattern.compile("^[-\\+]?[.\\d]*$");
return pattern.matcher(str).matches();
}
/**
* 判断email格式是否正确
*
* @param email
* @return
*/
public static boolean isEmail(String email) {
String str = "^([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})(\\]?)$";
Pattern p = Pattern.compile(str);
Matcher m = p.matcher(email);
return m.matches();
}
/**
* 判断是不是合法手机号码
*/
public static boolean isPhoneNumber(String handset) {
try {
if (!handset.substring(0, 1).equals("1")) {
return false;
}
if (handset == null || handset.length() != 11) {
return false;
}
String check = "^[0123456789]+$";
Pattern regex = Pattern.compile(check);
Matcher matcher = regex.matcher(handset);
boolean isMatched = matcher.matches();
if (isMatched) {
return true;
} else {
return false;
}
} catch (RuntimeException e) {
return false;
}
}
/**
* 判断输入的字符串是否为纯汉字
*
* @param str 传入的字符窜
* @return 如果是纯汉字返回true, 否则返回false
*/
public static boolean isChinese(String str) {
Pattern pattern = Pattern.compile("[\u0391-\uFFE5]+$");
return pattern.matcher(str).matches();
}
/**
* 清除文本里面的HTML标签
*
* @param htmlStr
* @return
*/
public static String clearHTMLTag(String htmlStr) {
String regEx_script = "<script[^>]*?>[\\s\\S]*?<\\/script>"; // 定义script的正则表达式
String regEx_style = "<style[^>]*?>[\\s\\S]*?<\\/style>"; // 定义style的正则表达式
String regEx_html = "<[^>]+>"; // 定义HTML标签的正则表达式
Log.v("htmlStr", htmlStr);
try {
Pattern p_script = Pattern.compile(regEx_script,
Pattern.CASE_INSENSITIVE);
Matcher m_script = p_script.matcher(htmlStr);
htmlStr = m_script.replaceAll(""); // 过滤script标签
Pattern p_style = Pattern.compile(regEx_style,
Pattern.CASE_INSENSITIVE);
Matcher m_style = p_style.matcher(htmlStr);
htmlStr = m_style.replaceAll(""); // 过滤style标签
Pattern p_html = Pattern.compile(regEx_html,
Pattern.CASE_INSENSITIVE);
Matcher m_html = p_html.matcher(htmlStr);
htmlStr = m_html.replaceAll(""); // 过滤html标签
} catch (Exception e) {
htmlStr = "clear error";
}
return htmlStr; // 返回文本字符串
}
}
复制代码
ToastUtils
import android.content.Context;
import android.widget.Toast;
/**
* Created by yy
* Date:2018/1/12
* Time:10:24
*/
public class ToastUtils {
private static Context mContext;
private static ToastUtils mInstance;
private Toast mToast;
public static ToastUtils getInstance() {
return mInstance;
}
public static void init(Context ctx) {
mInstance = new ToastUtils(ctx);
}
private ToastUtils(Context ctx) {
mContext = ctx;
}
public void showToast(String text) {
if (mToast == null) {
mToast = Toast.makeText(mContext, text, Toast.LENGTH_SHORT);
} else {
mToast.setText(text);
mToast.setDuration(Toast.LENGTH_LONG);
}
mToast.show();
}
public void cancelToast() {
if (mToast != null) {
mToast.cancel();
}
}
复制代码
Dateutils
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
/**
* Created by yy
* Date:2016/5/10
* Time:9:58
*/
public class DateUtils {
public static SimpleDateFormat formatDate = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault());
public static SimpleDateFormat formatDay = new SimpleDateFormat("d", Locale.getDefault());
public static SimpleDateFormat formatMonthDay = new SimpleDateFormat("M-d", Locale.getDefault());
public static SimpleDateFormat formatDateTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault());
/**
* 格式化日期
*
* @param date
* @return 年月日
*/
public static String formatDate(Date date) {
return formatDate.format(date);
}
/**
* 格式化日期
*
* @param date
* @return 年月日 时分秒
*/
public static String formatDateTime(Date date) {
return formatDateTime.format(date);
}
/**
* 将时间戳解析成日期
*
* @param timeInMillis
* @return 年月日
*/
public static String parseDate(long timeInMillis) {
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(timeInMillis);
Date date = calendar.getTime();
return formatDate(date);
}
/**
* 将时间戳解析成日期
*
* @param timeInMillis
* @return 年月日 时分秒
*/
public static String parseDateTime(long timeInMillis) {
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(timeInMillis);
Date date = calendar.getTime();
return formatDateTime(date);
}
/**
* 解析日期
*
* @param date
* @return
*/
public static Date parseDate(String date) {
Date mDate = null;
try {
mDate = formatDate.parse(date);
} catch (ParseException e) {
e.printStackTrace();
}
return mDate;
}
/**
* 解析日期
*
* @param datetime
* @return
*/
public static Date parseDateTime(String datetime) {
Date mDate = null;
try {
mDate = formatDateTime.parse(datetime);
} catch (ParseException e) {
e.printStackTrace();
}
return mDate;
}
/**
* 以友好的方式显示时间
*
* @param sdate
* @return
*/
public static String friendlyTime(String sdate) {
Date time = parseDateTime(sdate);
if (time == null) {
return "Unknown";
}
String ftime = "";
Calendar cal = Calendar.getInstance();
// 判断是否是同一天
String curDate = formatDate.format(cal.getTime());
String paramDate = formatDate.format(time);
if (curDate.equals(paramDate)) {
int hour = (int) ((cal.getTimeInMillis() - time.getTime()) / 3600000);
if (hour == 0)
ftime = Math.max(
(cal.getTimeInMillis() - time.getTime()) / 60000, 1)
+ "分钟前";
else
ftime = hour + "小时前";
return ftime;
}
long lt = time.getTime() / 86400000;
long ct = cal.getTimeInMillis() / 86400000;
int days = (int) (ct - lt);
if (days == 0) {
int hour = (int) ((cal.getTimeInMillis() - time.getTime()) / 3600000);
if (hour == 0)
ftime = Math.max(
(cal.getTimeInMillis() - time.getTime()) / 60000, 1)
+ "分钟前";
else
ftime = hour + "小时前";
} else if (days == 1) {
ftime = "昨天";
} else if (days == 2) {
ftime = "前天";
} else if (days > 2 && days <= 10) {
ftime = days + "天前";
} else if (days > 10) {
ftime = formatDate.format(time);
}
return ftime;
}
}
复制代码
NetworkUtil
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
public class NetworkUtil {
/** 网络不可用 */
public static final int NO_NETWORK = 0;
/** 是wifi连接 */
public static final int WIFI = 1;
/** 不是wifi连接 */
public static final int NO_WIFI = 2;
/**
* 获取当前网络连接类型
* @param context
* @return
*/
public static int getNetWorkType(Context context) {
if (!isNetWorkAvailable(context)) {
return NetworkUtil.NO_NETWORK;
}
ConnectivityManager cm = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
// cm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
if (cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnectedOrConnecting())
return NetworkUtil.WIFI;
else
return NetworkUtil.NO_WIFI;
}
/**
* 判断当前网络状态是否可用
* @param context
* @return
*/
public static boolean isNetWorkAvailable(Context context) {
ConnectivityManager cm = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
if (cm == null) {
return false;
}
NetworkInfo ni = cm.getActiveNetworkInfo();
if (ni == null || !ni.isAvailable()) {
return false;
}
return true;
}
}
复制代码
Logger
package ren.solid.library.utils;
import android.support.annotation.NonNull;
import android.text.TextUtils;
import android.util.Log;
public class Logger {
/**
* 是否为开发者模式(开发模式打印LOG,非开发模式不打印LOG)
*/
private static boolean mDebug = true;
private Logger() {
}
/**
* 打印info级别的log
*
* @param msg
*/
public static void i(Object object, String msg) {
String tagName = getTagName(object);
if (mDebug) {
Log.i(tagName, msg);
}
}
@NonNull
private static String getTagName(Object object) {
String tagName = object.getClass().getSimpleName();
if (TextUtils.isEmpty(tagName)) tagName = "AnonymityClass";
return tagName;
}
/**
* 打印info级别的log
*
* @param msg
*/
public static void i(String msg) {
if (mDebug) {
Log.i("LogInfo", msg);
}
}
/**
* 打印error级别的log
*
* @param msg
*/
public static void e(Object object, String msg) {
String tagName = getTagName(object);
if (mDebug) {
Log.e(tagName, msg);
}
}
/**
* 打印error级别的log
*
* @param msg
*/
public static void e(String msg) {
if (mDebug) {
Log.e("LogError", msg);
}
}
}
复制代码
public class NumberUtils {
/**
* 中国移动拥有号码段为:139,138,137,136,135,134,159,158,157(3G),151,150,188(3G),187(3G
* );13个号段 中国联通拥有号码段为:130,131,132,156(3G),186(3G),185(3G);6个号段
* 中国电信拥有号码段为:133,153,189(3G),180(3G);4个号码段
*/
private static String mRegMobileStr = "^1(([3][456789])|([5][01789])|([8][78]))[0-9]{8}$";
private static String mRegMobile3GStr = "^((157)|(18[78]))[0-9]{8}$";
private static String mRegUnicomStr = "^1(([3][012])|([5][6])|([8][56]))[0-9]{8}$";
private static String mRegUnicom3GStr = "^((156)|(18[56]))[0-9]{8}$";
private static String mRegTelecomStr = "^1(([3][3])|([5][3])|([8][09]))[0-9]{8}$";
private static String mRegTelocom3GStr = "^(18[09])[0-9]{8}$";
private static String mRegPhoneString = "^(?:13\\d|15\\d)\\d{5}(\\d{3}|\\*{3})$";
private String mobile = "";
private int facilitatorType = 0;
private boolean isLawful = false;
private boolean is3G = false;
public NumberUtils(String mobile)
{
this.setMobile(mobile);
}
public void setMobile(String mobile)
{
if (mobile == null)
{
return;
}
/** */
/** 第一步判断中国移动 */
if (mobile.matches(NumberUtils.mRegMobileStr))
{
this.mobile = mobile;
this.setFacilitatorType(0);
this.setLawful(true);
if (mobile.matches(NumberUtils.mRegMobile3GStr))
{
this.setIs3G(true);
}
}
/** */
/** 第二步判断中国联通 */
else if (mobile.matches(NumberUtils.mRegUnicomStr))
{
this.mobile = mobile;
this.setFacilitatorType(1);
this.setLawful(true);
if (mobile.matches(NumberUtils.mRegUnicom3GStr))
{
this.setIs3G(true);
}
}
/** */
/** 第三步判断中国电信 */
else if (mobile.matches(NumberUtils.mRegTelecomStr))
{
this.mobile = mobile;
this.setFacilitatorType(2);
this.setLawful(true);
if (mobile.matches(NumberUtils.mRegTelocom3GStr))
{
this.setIs3G(true);
}
}
/** */
/** 第四步判断座机 */
if (mobile.matches(NumberUtils.mRegPhoneString))
{
this.mobile = mobile;
this.setFacilitatorType(0);
this.setLawful(true);
if (mobile.matches(NumberUtils.mRegMobile3GStr))
{
this.setIs3G(true);
}
}
}
public String getMobile()
{
return mobile;
}
public int getFacilitatorType()
{
return facilitatorType;
}
public boolean isLawful()
{
return isLawful;
}
public boolean isIs3G()
{
return is3G;
}
private void setFacilitatorType(int facilitatorType)
{
this.facilitatorType = facilitatorType;
}
private void setLawful(boolean isLawful)
{
this.isLawful = isLawful;
}
private void setIs3G(boolean is3G)
{
this.is3G = is3G;
}
}
复制代码
SpUtils
import android.content.Context;
import android.content.SharedPreferences;
import java.util.Set;
/**
* 通过SharedPreferences存取数据的工具类
*/
public class SpUtils {
private static SharedPreferences sharedPreferences;
private static String config = "XY";
/**
* 存储Set String数据
*/
public static boolean putStringSet(Context context, String Key, Set<String> Value) {
if (sharedPreferences == null) {
sharedPreferences = context.getSharedPreferences(config, Context.MODE_PRIVATE);
}
return sharedPreferences.edit().putStringSet(Key, Value).commit();
}
/**
* 拿取Set String数据
*/
public static Set getStringSet(Context context, String Key, Set<String> defvalue) {
if (sharedPreferences == null) {
sharedPreferences = context.getSharedPreferences(config, Context.MODE_PRIVATE);
}
return sharedPreferences.getStringSet(Key, defvalue);
}
/**
* 存储String数据
*/
private static boolean putString(Context context, String Key, String Value) {
if (sharedPreferences == null) {
sharedPreferences = context.getSharedPreferences(config, Context.MODE_PRIVATE);
}
return sharedPreferences.edit().putString(Key, Value).commit();
}
/**
* 拿取String数据
*/
private static String getString(Context context, String Key, String defvalue) {
if (sharedPreferences == null) {
sharedPreferences = context.getSharedPreferences(config, Context.MODE_PRIVATE);
}
return sharedPreferences.getString(Key, defvalue);
}
// 保存boolean值
private static boolean putBoolean(Context context, String key, boolean value) {
if (sharedPreferences == null) {
sharedPreferences = context.getSharedPreferences(config, Context.MODE_PRIVATE);
}
return sharedPreferences.edit().putBoolean(key, value).commit();
}
// 取boolean值
private static boolean getBoolean(Context context, String key,
boolean defValue) {
if (sharedPreferences == null) {
sharedPreferences = context.getSharedPreferences(config, Context.MODE_PRIVATE);
}
return sharedPreferences.getBoolean(key, defValue);
}
// 保存int值
private static boolean putInt(Context context, String key, int value) {
if (sharedPreferences == null) {
sharedPreferences = context.getSharedPreferences(config, Context.MODE_PRIVATE);
}
return sharedPreferences.edit().putInt(key, value).commit();
}
// 取int值
private static int getInt(Context context, String key, int defValue) {
if (sharedPreferences == null) {
sharedPreferences = context.getSharedPreferences(config, Context.MODE_PRIVATE);
}
return sharedPreferences.getInt(key, defValue);
}
/**
* 设置是否第一次打开应用
* @return sp是否存储成功
*/
public static boolean setFirstOpen(Context context) {
return putBoolean(context, "FirstOpen", true);
}
/**
* 判断是否第一次打开应用
* @return 是否是第一次打开 true:是 false:否
*/
public static boolean getFirstOpen(Context context) {
return getBoolean(context, "FirstOpen", false);
}
}
复制代码
ViewUtils
/**
* 获取屏幕的宽度
*
* @param context context
* @return
*/
public static int getScreenWidth(Context context) {
DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
return displayMetrics.widthPixels;
}
/**
* 获取屏幕的高度
*
* @param context context
* @return
*/
public static int getScreenHeight(Context context) {
DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
return displayMetrics.heightPixels;
}
//转换dp为px
public static int dp2px(Context context, int dip) {
float scale = context.getResources().getDisplayMetrics().density;
return (int) (dip * scale + 0.5f * (dip >= 0 ? 1 : -1));
}
//转换px为dp
public static int px2dp(Context context, int px) {
float scale = context.getResources().getDisplayMetrics().density;
return (int) (px / scale + 0.5f * (px >= 0 ? 1 : -1));
}
//转换sp为px
public static int sp2px(Context context, float spValue) {
float fontScale = context.getResources().getDisplayMetrics().scaledDensity;
return (int) (spValue * fontScale + 0.5f);
}
//转换px为sp
public static int px2sp(Context context, float pxValue) {
float fontScale = context.getResources().getDisplayMetrics().scaledDensity;
return (int) (pxValue / fontScale + 0.5f);
}
}
复制代码