实例详解Android快速开发工具类总结

2019-12-10 19:13:17丽君

四、单位转换类 DensityUtils.java

public class DensityUtils 
{ 
private DensityUtils() 
{ 
/* cannot be instantiated */ 
throw new UnsupportedOperationException("cannot be instantiated"); 
} 
/** 
* dp转px 
* 
* @param context 
* @param val 
* @return 
*/ 
public static int dppx(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 sppx(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 pxdp(Context context, float pxVal) 
{ 
final float scale = context.getResources().getDisplayMetrics().density; 
return (pxVal / scale); 
} 
/** 
* px转sp 
* 
* @param fontScale 
* @param pxVal 
* @return 
*/ 
public static float pxsp(Context context, float pxVal) 
{ 
return (pxVal / context.getResources().getDisplayMetrics().scaledDensity); 
} 
}

TypedValue:

Container for a dynamically typed data value. Primarily used with Resources for holding resource values.
applyDimension(int unit, float value, DisplayMetrics metrics): 
Converts an unpacked complex data value holding a dimension to its final floating point value.

五、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() - ; 
// 获取单个数据块的大小(byte) 
long freeBlocks = stat.getAvailableBlocks(); 
return freeBlocks * availableBlocks; 
} 
return ; 
} 
/** 
* 获取指定路径所在空间的剩余可用容量字节数,单位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() - ; 
return stat.getBlockSize() * availableBlocks; 
} 
/** 
* 获取系统存储路径 
* 
* @return 
*/ 
public static String getRootDirectoryPath() 
{ 
return Environment.getRootDirectory().getAbsolutePath(); 
} 
}