公共方法总结
1、 判断是否为快速点击
/** 判断是否是快速点击 */private static long lastClickTime;public static boolean isFastDoubleClick() {long time = System.currentTimeMillis();long timeD = time - lastClickTime;if (0 < timeD && timeD < 500) {return true;}lastClickTime = time;return false;}
2、日志工具类 Log.java
public class L { private L() { /* 不可被实例化 */ throw new UnsupportedOperationException("Cannot be instantiated!"); } // 是否需要打印bug,可以在application的onCreate函数里面初始化 public static boolean isDebug = true; private static final String TAG = "DefaultTag"; // 下面四个是默认tag的函数 public static void i(String msg) { if (isDebug) Log.i(TAG, msg); } public static void d(String msg) { if (isDebug) Log.d(TAG, msg); } public static void e(String msg) { if (isDebug) Log.e(TAG, msg); } public static void v(String msg) { if (isDebug) Log.v(TAG, msg); } // 下面是传入自定义tag的函数 public static void i(String tag, String msg) { if (isDebug) Log.i(tag, msg); } public static void d(String tag, String msg) { if (isDebug) Log.i(tag, msg); } public static void e(String tag, String msg) { if (isDebug) Log.i(tag, msg); } public static void v(String tag, String msg) { if (isDebug) Log.i(tag, msg); } }
3、DensityUtils
public class DensityUtils { private DensityUtils() { /* cannot be instantiated */ throw new UnsupportedOperationException("cannot be instantiated"); } /** * dp转px * * @param context * @param val * @return */ public static int dp2px(Context context, float dpVal) { return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dpVal, context.getResources().getDisplayMetrics()); } /** * sp转px * * @param context * @param val * @return */ public static int sp2px(Context context, float spVal) { return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, spVal, context.getResources().getDisplayMetrics()); } /** * px转dp * * @param context * @param pxVal * @return */ public static float px2dp(Context context, float pxVal) { final float scale = context.getResources().getDisplayMetrics().density; return (pxVal / scale); } /** * px转sp * * @param fontScale * @param pxVal * @return */ public static float px2sp(Context context, float pxVal) { return (pxVal / context.getResources().getDisplayMetrics().scaledDensity); } }
4、SD卡相关辅助类 SDCardUtils.java
public class SDCardUtils { private SDCardUtils() { /* cannot be instantiated */ throw new UnsupportedOperationException("cannot be instantiated"); } /** * 判断SDCard是否可用 * * @return */ public static boolean isSDCardEnable() { return Environment.getExternalStorageState().equals( Environment.MEDIA_MOUNTED); } /** * 获取SD卡路径 * * @return */ public static String getSDCardPath() { return Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator; } /** * 获取SD卡的剩余容量 单位byte * * @return */ public static long getSDCardAllSize() { if (isSDCardEnable()) { StatFs stat = new StatFs(getSDCardPath()); // 获取空闲的数据块的数量 long availableBlocks = (long) stat.getAvailableBlocks() - 4; // 获取单个数据块的大小(byte) long freeBlocks = stat.getAvailableBlocks(); return freeBlocks * availableBlocks; } return 0; } /** * 获取指定路径所在空间的剩余可用容量字节数,单位byte * * @param filePath * @return 容量字节 SDCard可用空间,内部存储可用空间 */ public static long getFreeBytes(String filePath) { // 如果是sd卡的下的路径,则获取sd卡可用容量 if (filePath.startsWith(getSDCardPath())) { filePath = getSDCardPath(); } else {// 如果是内部存储的路径,则获取内存存储的可用容量 filePath = Environment.getDataDirectory().getAbsolutePath(); } StatFs stat = new StatFs(filePath); long availableBlocks = (long) stat.getAvailableBlocks() - 4; return stat.getBlockSize() * availableBlocks; } /** * 获取系统存储路径 * * @return */ public static String getRootDirectoryPath() { return Environment.getRootDirectory().getAbsolutePath(); } }
5、屏幕相关辅助类 ScreenUtils.java
public class ScreenUtils { private ScreenUtils() { /* cannot be instantiated */ throw new UnsupportedOperationException("cannot be instantiated"); } /** * 获得屏幕高度 * * @param context * @return */ public static int getScreenWidth(Context context) { WindowManager wm = (WindowManager) context .getSystemService(Context.WINDOW_SERVICE); DisplayMetrics outMetrics = new DisplayMetrics(); wm.getDefaultDisplay().getMetrics(outMetrics); return outMetrics.widthPixels; } /** * 获得屏幕宽度 * * @param context * @return */ public static int getScreenHeight(Context context) { WindowManager wm = (WindowManager) context .getSystemService(Context.WINDOW_SERVICE); DisplayMetrics outMetrics = new DisplayMetrics(); wm.getDefaultDisplay().getMetrics(outMetrics); return outMetrics.heightPixels; } /** * 获得状态栏的高度 * * @param context * @return */ public static int getStatusHeight(Context context) { int statusHeight = -1; try { Class> clazz = Class.forName("com.android.internal.R$dimen"); Object object = clazz.newInstance(); int height = Integer.parseInt(clazz.getField("status_bar_height") .get(object).toString()); statusHeight = context.getResources().getDimensionPixelSize(height); } catch (Exception e) { e.printStackTrace(); } return statusHeight; } /** * 获取当前屏幕截图,包含状态栏 * * @param activity * @return */ public static Bitmap snapShotWithStatusBar(Activity activity) { View view = activity.getWindow().getDecorView(); view.setDrawingCacheEnabled(true); view.buildDrawingCache(); Bitmap bmp = view.getDrawingCache(); int width = getScreenWidth(activity); int height = getScreenHeight(activity); Bitmap bp = null; bp = Bitmap.createBitmap(bmp, 0, 0, width, height); view.destroyDrawingCache(); return bp; } /** * 获取当前屏幕截图,不包含状态栏 * * @param activity * @return */ public static Bitmap snapShotWithoutStatusBar(Activity activity) { View view = activity.getWindow().getDecorView(); view.setDrawingCacheEnabled(true); view.buildDrawingCache(); Bitmap bmp = view.getDrawingCache(); Rect frame = new Rect(); activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame); int statusBarHeight = frame.top; int width = getScreenWidth(activity); int height = getScreenHeight(activity); Bitmap bp = null; bp = Bitmap.createBitmap(bmp, 0, statusBarHeight, width, height - statusBarHeight); view.destroyDrawingCache(); return bp; } }
6、文件工具类 FileUtils.java
public class FileUtils {public final static String FILE_EXTENSION_SEPARATOR = ".";private FileUtils() {throw new AssertionError();}/*** read file* * @param filePath* @param charsetName The name of a supported {@link java.nio.charset.Charset charset}*@return if file not exist, return null, else return content of file* @throws RuntimeException if an error occurs while operator BufferedReader*/public static StringBuilder readFile(String filePath, String charsetName) {File file = new File(filePath);StringBuilder fileContent = new StringBuilder("");if (file == null || !file.isFile()) {return null;}BufferedReader reader = null;try {InputStreamReader is = new InputStreamReader(new FileInputStream(file), charsetName);reader = new BufferedReader(is);String line = null;while ((line = reader.readLine()) != null) {if (!fileContent.toString().equals("")) {fileContent.append("\r\n");}fileContent.append(line);}return fileContent;} catch (IOException e) {throw new RuntimeException("IOException occurred. ", e);} finally {IOUtils.close(reader);}}/*** write file* * @param filePath* @param content* @param append is append, if true, write to the end of file, else clear content of file and write into it* @return return false if content is empty, true otherwise* @throws RuntimeException if an error occurs while operator FileWriter*/public static boolean writeFile(String filePath, String content, boolean append) {if (StringUtils.isEmpty(content)) {return false;}FileWriter fileWriter = null;try {makeDirs(filePath);fileWriter = new FileWriter(filePath, append);fileWriter.write(content);return true;} catch (IOException e) {throw new RuntimeException("IOException occurred. ", e);} finally {IOUtils.close(fileWriter);}}/*** write file* * @param filePath* @param contentList* @param append is append, if true, write to the end of file, else clear content of file and write into it* @return return false if contentList is empty, true otherwise* @throws RuntimeException if an error occurs while operator FileWriter*/public static boolean writeFile(String filePath, ListcontentList, boolean append) {if (ListUtils.isEmpty(contentList)) {return false;}FileWriter fileWriter = null;try {makeDirs(filePath);fileWriter = new FileWriter(filePath, append);int i = 0;for (String line : contentList) {if (i++ > 0) {fileWriter.write("\r\n");}fileWriter.write(line);}return true;} catch (IOException e) {throw new RuntimeException("IOException occurred. ", e);} finally {IOUtils.close(fileWriter);}}/*** write file, the string will be written to the begin of the file* * @param filePath* @param content* @return*/public static boolean writeFile(String filePath, String content) {return writeFile(filePath, content, false);}/*** write file, the string list will be written to the begin of the file* * @param filePath* @param contentList* @return*/public static boolean writeFile(String filePath, List contentList) {return writeFile(filePath, contentList, false);}/*** write file, the bytes will be written to the begin of the file* * @param filePath* @param stream* @return* @see {@link #writeFile(String, InputStream, boolean)}*/public static boolean writeFile(String filePath, InputStream stream) {return writeFile(filePath, stream, false);}/*** write file* * @param file the file to be opened for writing.* @param stream the input stream* @param append if true, then bytes will be written to the end of the file rather than the beginning* @return return true* @throws RuntimeException if an error occurs while operator FileOutputStream*/public static boolean writeFile(String filePath, InputStream stream, boolean append) {return writeFile(filePath != null ? new File(filePath) : null, stream, append);}/*** write file, the bytes will be written to the begin of the file* * @param file* @param stream* @return* @see {@link #writeFile(File, InputStream, boolean)}*/public static boolean writeFile(File file, InputStream stream) {return writeFile(file, stream, false);}/*** write file* * @param file the file to be opened for writing.* @param stream the input stream* @param append iftrue, then bytes will be written to the end of the file rather than the beginning* @return return true* @throws RuntimeException if an error occurs while operator FileOutputStream*/public static boolean writeFile(File file, InputStream stream, boolean append) {OutputStream o = null;try {makeDirs(file.getAbsolutePath());o = new FileOutputStream(file, append);byte data[] = new byte[1024];int length = -1;while ((length = stream.read(data)) != -1) {o.write(data, 0, length);}o.flush();return true;} catch (FileNotFoundException e) {throw new RuntimeException("FileNotFoundException occurred. ", e);} catch (IOException e) {throw new RuntimeException("IOException occurred. ", e);} finally {IOUtils.close(o);IOUtils.close(stream);}}/*** move file* * @param sourceFilePath* @param destFilePath*/public static void moveFile(String sourceFilePath, String destFilePath) {if (TextUtils.isEmpty(sourceFilePath) || TextUtils.isEmpty(destFilePath)) {throw new RuntimeException("Both sourceFilePath and destFilePath cannot be null.");}moveFile(new File(sourceFilePath), new File(destFilePath));}/*** move file* * @param srcFile* @param destFile*/public static void moveFile(File srcFile, File destFile) {boolean rename = srcFile.renameTo(destFile);if (!rename) {copyFile(srcFile.getAbsolutePath(), destFile.getAbsolutePath());deleteFile(srcFile.getAbsolutePath());}}/*** copy file* * @param sourceFilePath* @param destFilePath* @return* @throws RuntimeException if an error occurs while operator FileOutputStream*/public static boolean copyFile(String sourceFilePath, String destFilePath) {InputStream inputStream = null;try {inputStream = new FileInputStream(sourceFilePath);} catch (FileNotFoundException e) {throw new RuntimeException("FileNotFoundException occurred. ", e);}return writeFile(destFilePath, inputStream);}/*** read file to string list, a element of list is a line* * @param filePath* @param charsetName The name of a supported {@link java.nio.charset.Charset charset}*@return if file not exist, return null, else return content of file* @throws RuntimeException if an error occurs while operator BufferedReader*/public static ListreadFileToList(String filePath, String charsetName) {File file = new File(filePath);List fileContent = new ArrayList ();if (file == null || !file.isFile()) {return null;}BufferedReader reader = null;try {InputStreamReader is = new InputStreamReader(new FileInputStream(file), charsetName);reader = new BufferedReader(is);String line = null;while ((line = reader.readLine()) != null) {fileContent.add(line);}return fileContent;} catch (IOException e) {throw new RuntimeException("IOException occurred. ", e);} finally {IOUtils.close(reader);}}/*** get file name from path, not include suffix* * * getFileNameWithoutExtension(null) = null* getFileNameWithoutExtension("") = ""* getFileNameWithoutExtension(" ") = " "* getFileNameWithoutExtension("abc") = "abc"* getFileNameWithoutExtension("a.mp3") = "a"* getFileNameWithoutExtension("a.b.rmvb") = "a.b"* getFileNameWithoutExtension("c:\\") = ""* getFileNameWithoutExtension("c:\\a") = "a"* getFileNameWithoutExtension("c:\\a.b") = "a"* getFileNameWithoutExtension("c:a.txt\\a") = "a"* getFileNameWithoutExtension("/home/admin") = "admin"* getFileNameWithoutExtension("/home/admin/a.txt/b.mp3") = "b"** * @param filePath* @return file name from path, not include suffix* @see*/public static String getFileNameWithoutExtension(String filePath) {if (StringUtils.isEmpty(filePath)) {return filePath;}int extenPosi = filePath.lastIndexOf(FILE_EXTENSION_SEPARATOR);int filePosi = filePath.lastIndexOf(File.separator);if (filePosi == -1) {return (extenPosi == -1 ? filePath : filePath.substring(0, extenPosi));}if (extenPosi == -1) {return filePath.substring(filePosi + 1);}return (filePosi < extenPosi ? filePath.substring(filePosi + 1, extenPosi) : filePath.substring(filePosi + 1));}/*** get file name from path, include suffix* ** getFileName(null) = null* getFileName("") = ""* getFileName(" ") = " "* getFileName("a.mp3") = "a.mp3"* getFileName("a.b.rmvb") = "a.b.rmvb"* getFileName("abc") = "abc"* getFileName("c:\\") = ""* getFileName("c:\\a") = "a"* getFileName("c:\\a.b") = "a.b"* getFileName("c:a.txt\\a") = "a"* getFileName("/home/admin") = "admin"* getFileName("/home/admin/a.txt/b.mp3") = "b.mp3"** * @param filePath* @return file name from path, include suffix*/public static String getFileName(String filePath) {if (StringUtils.isEmpty(filePath)) {return filePath;}int filePosi = filePath.lastIndexOf(File.separator);return (filePosi == -1) ? filePath : filePath.substring(filePosi + 1);}/*** get folder name from path* ** getFolderName(null) = null* getFolderName("") = ""* getFolderName(" ") = ""* getFolderName("a.mp3") = ""* getFolderName("a.b.rmvb") = ""* getFolderName("abc") = ""* getFolderName("c:\\") = "c:"* getFolderName("c:\\a") = "c:"* getFolderName("c:\\a.b") = "c:"* getFolderName("c:a.txt\\a") = "c:a.txt"* getFolderName("c:a\\b\\c\\d.txt") = "c:a\\b\\c"* getFolderName("/home/admin") = "/home"* getFolderName("/home/admin/a.txt/b.mp3") = "/home/admin/a.txt"** * @param filePath* @return*/public static String getFolderName(String filePath) {if (StringUtils.isEmpty(filePath)) {return filePath;}int filePosi = filePath.lastIndexOf(File.separator);return (filePosi == -1) ? "" : filePath.substring(0, filePosi);}/*** get suffix of file from path* ** getFileExtension(null) = ""* getFileExtension("") = ""* getFileExtension(" ") = " "* getFileExtension("a.mp3") = "mp3"* getFileExtension("a.b.rmvb") = "rmvb"* getFileExtension("abc") = ""* getFileExtension("c:\\") = ""* getFileExtension("c:\\a") = ""* getFileExtension("c:\\a.b") = "b"* getFileExtension("c:a.txt\\a") = ""* getFileExtension("/home/admin") = ""* getFileExtension("/home/admin/a.txt/b") = ""* getFileExtension("/home/admin/a.txt/b.mp3") = "mp3"** * @param filePath* @return*/public static String getFileExtension(String filePath) {if (StringUtils.isBlank(filePath)) {return filePath;}int extenPosi = filePath.lastIndexOf(FILE_EXTENSION_SEPARATOR);int filePosi = filePath.lastIndexOf(File.separator);if (extenPosi == -1) {return "";}return (filePosi >= extenPosi) ? "" : filePath.substring(extenPosi + 1);}/*** Creates the directory named by the trailing filename of this file, including the complete directory path required* to create this directory.
*
** Attentions:*
* * @param filePath* @return true if the necessary directories have been created or the target directory already exists, false one of* the directories can not be created.*- makeDirs("C:\\Users\\Trinea") can only create users folder
*- makeFolder("C:\\Users\\Trinea\\") can create Trinea folder
**
@link FileUtils#getFolderName(String)} return null, return false*- if {
if target directory already exists, return true *return { @link java.io.File#makeFolder}* */public static boolean makeDirs(String filePath) {String folderName = getFolderName(filePath);if (StringUtils.isEmpty(folderName)) {return false;}File folder = new File(folderName);return (folder.exists() && folder.isDirectory()) ? true : folder.mkdirs();}/*** @param filePath* @return* @see #makeDirs(String)*/public static boolean makeFolders(String filePath) {return makeDirs(filePath);}/*** Indicates if this file represents a file on the underlying file system.* * @param filePath* @return*/public static boolean isFileExist(String filePath) {if (StringUtils.isBlank(filePath)) {return false;}File file = new File(filePath);return (file.exists() && file.isFile());}/*** Indicates if this file represents a directory on the underlying file system.* * @param directoryPath* @return*/public static boolean isFolderExist(String directoryPath) {if (StringUtils.isBlank(directoryPath)) {return false;}File dire = new File(directoryPath);return (dire.exists() && dire.isDirectory());}/*** delete file or directory**
@param path* @return*/public static boolean deleteFile(String path) {if (StringUtils.isBlank(path)) {return true;}File file = new File(path);if (!file.exists()) {return true;}if (file.isFile()) {return file.delete();}if (!file.isDirectory()) {return false;}for (File f : file.listFiles()) {if (f.isFile()) {f.delete();} else if (f.isDirectory()) {deleteFile(f.getAbsolutePath());}}return file.delete();}/*** get file size*- if path is null or empty, return true
*- if path not exist, return true
*- if path exist, delete recursion. return true
** *
*
@param path* @return returns the length of this file in bytes. returns -1 if the file does not exist.*/public static long getFileSize(String path) {if (StringUtils.isBlank(path)) {return -1;}File file = new File(path);return (file.exists() && file.isFile() ? file.length() : -1);} }- if path is null or empty, return -1
*- if path exist and it is a file, return file size, else return -1
** *
7、assets和raw资源工具类 ResourceUtils.java
public class ResourceUtils {private ResourceUtils() {throw new AssertionError();}/*** get an asset using ACCESS_STREAMING mode. This provides access to files that have been bundled with an* application as assets -- that is, files placed in to the "assets" directory.* * @param context* @param fileName The name of the asset to open. This name can be hierarchical.* @return*/public static String geFileFromAssets(Context context, String fileName) {if (context == null || StringUtils.isEmpty(fileName)) {return null;}StringBuilder s = new StringBuilder("");try {InputStreamReader in = new InputStreamReader(context.getResources().getAssets().open(fileName));BufferedReader br = new BufferedReader(in);String line;while ((line = br.readLine()) != null) {s.append(line);}return s.toString();} catch (IOException e) {e.printStackTrace();return null;}}/*** get content from a raw resource. This can only be used with resources whose value is the name of an asset files* -- that is, it can be used to open drawable, sound, and raw resources; it will fail on string and color* resources.* * @param context* @param resId The resource identifier to open, as generated by the appt tool.* @return*/public static String geFileFromRaw(Context context, int resId) {if (context == null) {return null;}StringBuilder s = new StringBuilder();try {InputStreamReader in = new InputStreamReader(context.getResources().openRawResource(resId));BufferedReader br = new BufferedReader(in);String line;while ((line = br.readLine()) != null) {s.append(line);}return s.toString();} catch (IOException e) {e.printStackTrace();return null;}}/*** same to {@link ResourceUtils#geFileFromAssets(Context, String)}, but return type is List* * @param context* @param fileName* @return*/public static ListgeFileToListFromAssets(Context context, String fileName) {if (context == null || StringUtils.isEmpty(fileName)) {return null;}List fileContent = new ArrayList ();try {InputStreamReader in = new InputStreamReader(context.getResources().getAssets().open(fileName));BufferedReader br = new BufferedReader(in);String line;while ((line = br.readLine()) != null) {fileContent.add(line);}br.close();return fileContent;} catch (IOException e) {e.printStackTrace();return null;}}/*** same to {@link ResourceUtils#geFileFromRaw(Context, int)}, but return type is List * * @param context* @param resId* @return*/public static ListgeFileToListFromRaw(Context context, int resId) {if (context == null) {return null;}List fileContent = new ArrayList ();BufferedReader reader = null;try {InputStreamReader in = new InputStreamReader(context.getResources().openRawResource(resId));reader = new BufferedReader(in);String line = null;while ((line = reader.readLine()) != null) {fileContent.add(line);}reader.close();return fileContent;} catch (IOException e) {e.printStackTrace();return null;}} }
8、单例工具类 SingletonUtils.java
public abstract class SingletonUtils{private T instance;protected abstract T newInstance();public final T getInstance() {if (instance == null) {synchronized (SingletonUtils.class) {if (instance == null) {instance = newInstance();}}}return instance;} }
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
