專案中可能用到的一些工具類Utils

小二陽發表於2018-01-26

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

相關文章