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);
}
}
複製程式碼