package com.anthony.library.utils; import android.content.Context; import android.os.Handler; import android.os.Looper; import java.io.File; public class SettingUtil { public static final String SP_ONLY_WIFI_LOAD_IMG = "OnlyWifiLoadImg"; public static final String SP_CURRENT_FONT_PATH = "current_font_path"; public static final String SP_CURRENT_FONT_SIZE = "current_font_size"; private static final boolean DEFAULT_NO_IMAGE = false; private static final boolean DEFAULT_AUTO_SAVE = true; public static final String SP_NO_IMAGE = "no_image"; public static final String SP_AUTO_CACHE = "auto_cache"; public static final String SP_THEM_INDEX = "ThemeIndex"; public static final String SP_NIGHT_MODE = "pNightMode"; /** * WIFI下加载大图 */ public static boolean getOnlyWifiLoadImg(Context ctx) { return SpUtil.getBoolean(ctx, SP_ONLY_WIFI_LOAD_IMG, false); } public static void setOnlyWifiLoadImg(Context ctx, boolean isOn) { SpUtil.putBoolean(ctx, SP_ONLY_WIFI_LOAD_IMG, isOn); } /** * 设置字体 */ // public static List<Font> getFontList(Context ctx) { // List<Font> list = new ArrayList<>(); // try { // String[] files = ctx.getResources().getAssets().list("fonts"); // for (String name : files) { // Font font = new Font(); // font.name = name.substring(0, name.lastIndexOf(".")); // font.path = "fonts/" + name; // list.add(font); // } // } catch (IOException e) { // e.printStackTrace(); // } // return list; // } public static String getCurrentFont(Context ctx) { return SpUtil.getString(ctx, SP_CURRENT_FONT_PATH, ""); } /** * 设置字号 */ public static int getCurrentFontSize(Context ctx) { return SpUtil.getInt(ctx, SP_CURRENT_FONT_SIZE, 0); } public static void setCurrentFontSize(Context ctx, int size) { SpUtil.putInt(ctx, SP_CURRENT_FONT_SIZE, size); } // public static int getThemeId(String theme) { // Field f; // try { // f = R.style.class.getField(theme); // return f.getInt(null); // } catch (NoSuchFieldException e) { // e.printStackTrace(); // } catch (IllegalAccessException e) { // e.printStackTrace(); // } catch (IllegalArgumentException e) { // e.printStackTrace(); // } // return 0; // } // // public static int getAttrId(String attr) { // Field f; // try { // f = R.attr.class.getField(attr); // return f.getInt(null); // } catch (NoSuchFieldException e) { // e.printStackTrace(); // } catch (IllegalAccessException e) { // e.printStackTrace(); // } catch (IllegalArgumentException e) { // e.printStackTrace(); // } // return 0; // } /** * 清理缓存 */ public static void countDirSizeTask(final File dir, final CountDirSizeListener listener) { new Thread() { public void run() { final long result = getDirSize(dir); Handler handler = new Handler(Looper.getMainLooper()); handler.post(new Runnable() { @Override public void run() { listener.onResult(result); } }); } }.start(); } public static void clearAppCache(final File dir, final ClearCacheListener listener) { new Thread() { public void run() { clearCache(dir); Handler handler = new Handler(Looper.getMainLooper()); handler.post(new Runnable() { @Override public void run() { listener.onResult(); } }); } }.start(); } public interface ClearCacheListener { void onResult(); } public interface CountDirSizeListener { void onResult(long result); } private static long getDirSize(File dir) { if (dir == null) { return 0; } if (!dir.isDirectory()) { return 0; } long dirSize = 0; File[] files = dir.listFiles(); for (File file : files) { if (file.isFile()) { dirSize += file.length(); } else if (file.isDirectory()) { dirSize += file.length(); dirSize += getDirSize(file); // 递归调用继续统计 } } return dirSize; } public static String formatFileSize(long fileS) { java.text.DecimalFormat df = new java.text.DecimalFormat("#.00"); String fileSizeString = ""; if (fileS < 1024) { fileSizeString = df.format((double) fileS) + "B"; } else if (fileS < 1048576) { fileSizeString = df.format((double) fileS / 1024) + "KB"; } else if (fileS < 1073741824) { fileSizeString = df.format((double) fileS / 1048576) + "MB"; } else { fileSizeString = df.format((double) fileS / 1073741824) + "G"; } if (fileSizeString.startsWith(".")) { return "0B"; } return fileSizeString; } private static void clearCache(File file) { clearFile(file); } private static void clearFile(File file) { if (file == null || !file.exists()) { return; } if (file.isDirectory()) { for (File child : file.listFiles()) { clearFile(child); } } else { file.delete(); } } private static int clearFolder(File dir, long curTime) { int deletedFiles = 0; if (dir != null && dir.isDirectory()) { for (File child : dir.listFiles()) { if (child.isDirectory()) { deletedFiles += clearFolder(child, curTime); } if (child.lastModified() < curTime) { if (child.delete()) { deletedFiles++; } } } } return deletedFiles; } /** * 是否需要更新 * * @param ctx * @return */ public static boolean isNeedUpdate(Context ctx) { int local_code = convertVersionNameToInt(AppUtils.getAppVersionName(ctx)); int remote_code = convertVersionNameToInt("2.0.0"); return remote_code > local_code; } private static int convertVersionNameToInt(String versionName) { String version = versionName.replaceAll("\\.", ""); return Integer.parseInt(version); } /** * 无图模式 * @param context * @return */ public static boolean getNoImageState(Context context) { return SpUtil.getBoolean(context, SP_NO_IMAGE); } public static void setNoImageState(Context context, boolean state) { SpUtil.putBoolean(context, SP_NO_IMAGE, DEFAULT_NO_IMAGE); } /** * 自动缓存 * @param context * @return */ public static boolean getAutoCacheState(Context context) { return SpUtil.getBoolean(context, SP_AUTO_CACHE); } public static void setAutoCacheState(Context context,boolean state) { SpUtil.putBoolean(context, SP_AUTO_CACHE, DEFAULT_AUTO_SAVE); } //不同主题 public static int getThemeIndex(Context context) { return SpUtil.getInt(context,SP_THEM_INDEX); } public static void setThemeIndex(Context context, int index) { SpUtil.putInt(context,SP_THEM_INDEX,index); } //主题模式(日间,夜间) public static boolean getNightModel(Context context) { return SpUtil.getBoolean(context,SP_NIGHT_MODE); } public static void setNightModel(Context context, boolean nightModel) { SpUtil.putBoolean(context,SP_NIGHT_MODE,nightModel); } }