公共方法总结

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, List contentList, 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 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(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 List readFileToList(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:*
  • makeDirs("C:\\Users\\Trinea") can only create users folder
  • *
  • makeFolder("C:\\Users\\Trinea\\") can create Trinea folder
  • *
* *
@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.*
    *
  • if {@link FileUtils#getFolderName(String)} return null, return false
  • *
  • 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*
    *
  • if path is null or empty, return true
  • *
  • if path not exist, return true
  • *
  • if path exist, delete recursion. return true
  • *
      * * @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 -1
      • *
      • if path exist and it is a file, return file size, else return -1
      • *
          * * @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);} }

 

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 List geFileToListFromAssets(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 List geFileToListFromRaw(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;}
}

 


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部