Android - 开发常用工具类 Utils,真的已经讲烂了
} else {
size = size + flist[i].length();
}
}
return size;
}
/**
得到字符串方式的文件大小
@param fileS ,单位 b
@return
*/
public static String FormetFileSize(long fileS) {
DecimalFormat df = new DecimalFormat("0.00");
String fileSizeString;
if (fileS < 1024) {
fileSizeString = df.format((double) fileS) + "B";
} else if (fileS < 1048576) {
fileSizeString = df.format((double) fileS / 1024) + "K";
} else if (fileS < 1073741824) {
fileSizeString = df.format((double) fileS / 1048576) + "M";
} else {
fileSizeString = df.format((double) fileS / 1073741824) + "G";
}
return fileSizeString;
}
}
5.DensityUtil.class(单位转换和获取屏幕宽高的工具类)
import android.app.Activity;
import android.content.Context;
import android.util.DisplayMetrics;
/**
Created by mythmayor on 2016/12/14.
*/
public class DensityUtil {
/**
将 px 值转换为 dip 或 dp 值,保证尺寸大小不变
@param pxValue 像素值
@param context Context 对象
@return dp 值
*/
public static int px2dip(float pxValue, Context context) {
float scale = getDensity(context);
return (int) (pxValue / scale + 0.5f);
}
/**
将 dip 或 dp 值转换为 px 值,保证尺寸大小不变
@param dipValue dip 数值
@param context Context 对象
@return 像素值
*/
public static int dip2px(float dipValue, Context context) {
float scale = getDensity(context);
return (int) (dipValue * scale + 0.5f);
}
/**
将 px 值转换为 sp 值,保证文字大小不变
@param pxValue 像素值
@param context Context 对象
@return 返回 sp 数值
*/
public static int px2sp(float pxValue, Context context) {
float scale = getDensity(context);
return (int) (pxValue / scale + 0.5f);
}
/**
将 sp 值转换为 px 值,保证文字大小不变
@param spValue sp 数值
@param context Context 对象
@return 返回像素值
*/
public static int sp2px(float spValue, Context context) {
float scale = getDensity(context);
return (int) (spValue * scale + 0.5f);
}
/**
取得手机屏幕的密度
@param context 上下文
@return 手机屏幕的密度
*/
public static float getDensity(Context context) {
float scale = context.getResources().getDisplayMetrics().density;
return scale;
}
/**
获取屏幕高
@param activity
@return 手机屏幕的高度
*/
public static int getScreenHeight(Activity activity) {
DisplayMetrics dm = new DisplayMetrics();
activity.getWindowManager().getDefaultDisplay().getMetrics(dm);
return dm.heightPixels;
}
/**
获取屏幕宽
@param activity
@return 手机屏幕的宽度
*/
public static int getScreenWidth(Activity activity) {
DisplayMetrics dm = new DisplayMetrics();
activity.getWindowManager().getDefaultDisplay().getMetrics(dm);
return dm.widthPixels;
}
}
6.ResourceUtil.class(获取资源文件的工具类)
import android.app.Activity;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.drawable.Drawable;
import android.util.DisplayMetrics;
public class CommonUtil {
/**
获取 Resource 对象
*/
public static Resources getResources() {
return MainApplication.getContext().getResources();
}
/**
获取 Drawable 资源
*/
public static Drawable getDrawable(int resId) {
return getResources().getDrawable(resId);
}
/**
获取字符串资源
*/
public static String getString(int resId) {
return getResources().getString(resId);
}
/**
获取 color 资源
*/
public static int getColor(int resId) {
return getResources().getColor(resId);
}
/**
获取 dimens 资源
*/
public static float getDimens(int resId) {
return getResources().getDimension(resId);
}
/**
获取字符串数组资源
*/
public static String[] getStringArray(int resId) {
return getResources().getStringArray(resId);
}
7.DateUtil.class(日期时间转换的工具类)
import android.annotation.SuppressLint;
import android.text.format.Time;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
时间、日期转换工具
Created by mythmayor on 2016/9/14.
*/
public class DateUtils {
/**
获取当前时间
@return 年月日时分秒字符串
*/
public static String getCurrentTime() {
Time time = new Time("GMT+8");
time.setToNow();
String year = "" + time.year;
int imonth = time.month + 1;
String month = imonth > 9 ? "" + imonth : "0" + imonth;
String day = time.monthDay > 9 ? "" + time.monthDay : "0"
time.monthDay;
String hour = (time.hour + 8) > 9 ? "" + (time.hour + 8) : "0"
(time.hour + 8);
String minute = time.minute > 9 ? "" + time.minute : "0" + time.minute;
String sec = time.second > 9 ? "" + time.second : "0" + time.second;
String currentTime = year + month + day + hour + minute + sec;
return currentTime;
}
//获取 日期/时/分/秒
@SuppressLint("SimpleDateFormat")
public static String getDateTime(long time) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String date = sdf.format(new Date(time));
return date;
}
//获取 日期/时/分
@SuppressLint("SimpleDateFormat")
public static String getHourMinute(long time) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy 年 MM 月 dd 日 HH 时 mm 分");
String date = sdf.format(new Date(time));
return date;
}
//获取 日期年月日
@SuppressLint("SimpleDateFormat")
public static String getYearMonthDay(long time) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy 年 MM 月 dd 日");
String date = sdf.format(new Date(time));
return date;
}
//获取日期年月
public static String getYearMonth(long time){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy 年 MM 月");
String date = sdf.format(new Date(time));
return date;
}
//获取日期年月
public static String getYearMonth2(long time){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
String date = sdf.format(new Date(time));
return date;
}
//获取日期年
public static String getYear(long time){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy 年");
String date = sdf.format(new Date(time));
return date;
}
//获取 时/分
public static String getTime(long time) {
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
String date = sdf.format(new Date(time));
return date;
}
}
8.GlideCacheUtil.class(管理 Glide 产生的缓存的工具类)
/**
Created by mythmayor on 2017/2/22.
*/
import android.content.Context;
import android.os.Looper;
import android.text.TextUtils;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.cache.ExternalCacheDiskCacheFactory;
import com.bumptech.glide.load.engine.cache.InternalCacheDiskCacheFactory;
import java.io.File;
import java.math.BigDecimal;
/**Glide 缓存工具类
Created by mythmayor on 2016/10/10.
*/
public class GlideCacheUtil {
private static GlideCacheUtil inst;
public static GlideCacheUtil getInstance() {
if (inst == null) {
inst = new GlideCacheUtil();
}
return inst;
}
/**
清除图片磁盘缓存
*/
public void clearImageDiskCache(final Context context) {
try {
if (Looper.myLooper() == Looper.getMainLooper()) {
new Thread(new Runnable() {
@Override
public void run() {
Glide.get(context).clearDiskCache();
// BusUtil.getBus().post(new GlideCacheClearSuccessEvent());
}
}).start();
} else {
Glide.get(context).clearDiskCache();
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
清除图片内存缓存
*/
public void clearImageMemoryCache(Context context) {
try {
if (Looper.myLooper() == Looper.getMainLooper()) { //只能在主线程执行
Glide.get(context).clearMemory();
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
清除图片所有缓存
*/
public void clearImageAllCache(Context context) {
clearImageDiskCache(context);
clearImageMemoryCache(context);
String ImageExternalCatchDir=context.getExternalCacheDir()+ ExternalCacheDiskCacheFactory.DEFAULT_DISK_CACHE_DIR;
deleteFolderFile(ImageExternalCatchDir, true);
}
/**
获取 Glide 造成的缓存大小
@return CacheSize
*/
public String getCacheSize(Context context) {
try {
return getFormatSize(getFolderSize(new File(context.getCacheDir() + "/"+ InternalCacheDiskCacheFactory.DEFAULT_DISK_CACHE_DIR)));
} catch (Exception e) {
e.printStackTrace();
}
return "";
}
/**
获取指定文件夹内所有文件大小的和
@param file file
@return size
@throws Exception
*/
private long getFolderSize(File file) throws Exception {
long size = 0;
try {
File[] fileList = file.listFiles();
for (File aFileList : fileList) {
if (aFileList.isDirectory()) {
size = size + getFolderSize(aFileList);
} else {
size = size + aFileList.length();
}
}
} catch (Exception e) {
e.printStackTrace();
}
return size;
}
/**
删除指定目录下的文件,这里用于缓存的删除
@param filePath filePath
@param deleteThisPath deleteThisPath
*/
private void deleteFolderFile(String filePath, boolean deleteThisPath) {
if (!TextUtils.isEmpty(filePath)) {
try {
File file = new File(filePath);
if (file.isDirectory()) {
File files[] = file.listFiles();
for (File file1 : files) {
deleteFolderFile(file1.getAbsolutePath(), true);
}
}
if (deleteThisPath) {
if (!file.isDirectory()) {
file.delete();
} else {
if (file.listFiles().length == 0) {
file.delete();
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
/**
格式化单位
@param size size
@return size
*/
private static String getFormatSize(double size) {
double kiloByte = size / 1024;
if (kiloByte < 1) {
return size + "B";
}
double megaByte = kiloByte / 1024;
if (megaByte < 1) {
BigDecimal result1 = new BigDecimal(Double.toString(kiloByte));
return result1.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString() + "KB";
}
double gigaByte = megaByte / 1024;
if (gigaByte < 1) {
BigDecimal result2 = new BigDecimal(Double.toString(megaByte));
return result2.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString() + "MB";
}
double teraBytes = gigaByte / 1024;
if (teraBytes < 1) {
BigDecimal result3 = new BigDecimal(Double.toString(gigaByte));
return result3.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString() + "GB";
}
BigDecimal result4 = new BigDecimal(teraBytes);
return result4.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString() + "TB";
}
}
9.JsonUtil.class(管理 Json 数据的工具类)
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
public class JsonUtils {
public static Map<String, Object> jsonToMap(String jsonString) {
Map<String, Object> map = new HashMap<String, Object>();
try {
JSONObject json = new JSONObject(jsonString);
Iterator<?> it = json.keys();
String key = null;
Object value = null;
while (it.hasNext()) {
key = it.next().toString();
value = json.get(key);
if (value.toString().equals("null") || value.toString().equals("")) {
value = "";
}
map.put(key, value);
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
return map;
}
public static JSONObject mapToJson(@SuppressWarnings("rawtypes") Map map) {
JSONObject json = null;
json = new JSONObject(map);
return json;
}
public static List<Map<String, Object>> jsonToList(String jsonArrayString) {
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
try {
JSONArray array = new JSONArray(jsonArrayString);
for (int i = 0; i < array.length(); i++) {
JSONObject json = array.getJSONObject(i);
Map<String, Object> map = jsonToMap(json.toString());
list.add(map);
}
} catch (JSONException e) {
e.printStackTrace();
return null;
}
return list
;
}
/**
@param json
@return
*/
public static Map<String, Object> jsonToMap(JSONObject json) {
Map<String, Object> map = new HashMap<String, Object>();
try {
Iterator<?> it = json.keys();
String key = null;
Object value = null;
while (it.hasNext()) {
key = it.next().toString();
value = json.get(key);
if (value.toString().equals("null") || value.toString().equals("")) {
value = "";
}
map.put(key, value);
}
} catch (JSONException e) {
e.printStackTrace();
return null;
}
return map;
}
/**
@param array
@return
*/
public static List<Map<String, Object>> jsonToList(JSONArray array) {
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
try {
for (int i = 0; i < array.length(); i++) {
JSONObject json = array.getJSONObject(i);
Map<String, Object> map = jsonToMap(json.toString());
list.add(map);
}
} catch (JSONException e) {
e.printStackTrace();
return null;
}
return list;
}
/**
@param json
@param name
@return
*/
public static int getInt(JSONObject json, String name) {
if (json.has(name)) {
try {
if (!json.getString(name).equals("null") & json.getString(name) != "")
return json.getInt(name);
return -100;
} catch (JSONException e) {
e.printStackTrace();
}
}
return 0;
}
评论