Android中常用開發工具類—持續更新...
一、自訂ActionBar
public class ActionBarTool {public static void setActionBarLayout(Activity act,Context context,int layoutId){//前兩個參數一般情況下都可以填this,第三個參數為自訂View的Id ActionBar actionBar = act.getActionBar(); if( null != actionBar ){ actionBar.setDisplayShowHomeEnabled(false);//是否顯示左上方的應用表徵圖 actionBar.setDisplayShowCustomEnabled(true);//是否使用自訂標題列 LayoutInflater inflator = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); View v = inflator.inflate(layoutId, null);//填充自訂布局 ActionBar.LayoutParams layout = new ActionBar.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); actionBar.setCustomView(v,layout);//把自訂View設定成ActionBar }}}
二、系統資訊工具類
public class SystemInfoUtils {public static int getRunningAppProcesses(Context context) {// 得到當前系統內啟動並執行app進程數量ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);List appInfos = am.getRunningAppProcesses();return appInfos.size();}public static List> getAppInfo(Context context) {// 得到非系統應用的app資訊List> appInfos = new ArrayList>();HashMap map = null;List packages = context.getPackageManager().getInstalledPackages(0);// 參數傳入0表示過濾許可權,因為可能有的手機不讓你擷取應用資訊for (PackageInfo temp : packages) {if ((temp.applicationInfo.flags & temp.applicationInfo.FLAG_SYSTEM) == 0) {// 非系統應用// 得到應用的名稱String appName = temp.applicationInfo.loadLabel(context.getPackageManager()).toString();// 得到應用表徵圖Drawable appIcon = temp.applicationInfo.loadIcon(context.getPackageManager());// 得到應用最後一次更新的時間long lastUpdateTime = temp.lastUpdateTime;// 得到應用的包名String packageName = temp.packageName;// 得到應用的版本資訊String versionName = temp.versionName;map = new HashMap();map.put(appName, appName);map.put(appIcon, appIcon);map.put(lastUpdateTime, lastUpdateTime);map.put(packageName, packageName);map.put(versionName, versionName);appInfos.add(map);// 把應用資訊加入集合中返回map = null;} else {// 系統應用}}return appInfos;}// 擷取sd卡容量public static String getSdSize(Context context) {String totalStr = null, availStr = null;if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {// 判斷是否檢測到sd卡File path = Environment.getExternalStorageDirectory();StatFs stat = new StatFs(path.getPath());long blockSize = stat.getBlockSizeLong();long availableBlocks = stat.getAvailableBlocksLong();long totalBlocks = stat.getBlockCountLong();long totalSize = blockSize * totalBlocks;long availSize = blockSize * availableBlocks;totalStr = Formatter.formatFileSize(context, totalSize);availStr = Formatter.formatFileSize(context, availSize);} elseToast.makeText(context, 沒有檢測到SD卡,請檢查是否正確插入, Toast.LENGTH_SHORT).show();return SD卡總容量為: + totalStr + 可用為: + availStr;}// 擷取手機記憶體public static String getRomSave(Context context) {String totalStr = null, availStr = null;File path = Environment.getDataDirectory();StatFs stat = new StatFs(path.getPath());// 得到手機記憶體的路徑long blockSize = stat.getBlockSizeLong();long availableBlocks = stat.getAvailableBlocksLong();long totalBlocks = stat.getBlockCountLong();long totalSize = blockSize * totalBlocks;long availSize = blockSize * availableBlocks;totalStr = Formatter.formatFileSize(context, totalSize);availStr = Formatter.formatFileSize(context, availSize);return 手機記憶體總大小為: + totalStr + 可用空間為: + availStr;}}
三、網路相關工具類
public class NetworkUtils {// 判斷當前網路是否可用public static boolean networkIsConnect(Context context) {ConnectivityManager conn = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);NetworkInfo info = conn.getActiveNetworkInfo();if (info != null && info.isConnected()) {return true;} else {return false;}}// 判斷當前串連的網路是否是wifi,並得到串連當前Wifi的資訊public static boolean networkIsWifi(Context context) {ConnectivityManager conn = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);NetworkInfo info = conn.getActiveNetworkInfo();if (info != null && info.isConnected()&& info.getType() == ConnectivityManager.TYPE_WIFI) {WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);WifiInfo wifiInfo = wifiManager.getConnectionInfo();Toast.makeText(context, 串連的wifi網路的id為:+wifiInfo.getNetworkId(), Toast.LENGTH_SHORT).show();return true;} else {return false;}}// 是否開啟Wifipublic static void setWifiEnabled(Context context, boolean enabled) {WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);if (enabled) {wifiManager.setWifiEnabled(true);} else {wifiManager.setWifiEnabled(false);}}}
四、Px與Dp轉化工具類
public class DensityUtils {public static int Dp2Px(Context context, float dp) { final float scale = context.getResources().getDisplayMetrics().density; return (int) (dp * scale + 0.5f); } public static int Px2Dp(Context context, float px) { final float scale = context.getResources().getDisplayMetrics().density; return (int) (px / scale + 0.5f); } }
五、震動工具類
public class VibratorUtil { /** * long milliseconds :震動的時間長度,單位是毫秒 * long[] pattern :自訂震動模式 。數組中數位含義依次是[靜止時間長度,震動時間長度,靜止時間長度,震動時間長度。。。]時間長度的單位是毫秒 * boolean isRepeat : 是否反覆震動,如果是true,反覆震動,如果是false,只震動一次 */ public static void Vibrate(final Context context) { long milliseconds = 100; Vibrator vib = (Vibrator) context.getSystemService(Service.VIBRATOR_SERVICE); vib.vibrate(milliseconds); } public static void Vibrate(final Context context, long milliseconds) { Vibrator vib = (Vibrator) context.getSystemService(Service.VIBRATOR_SERVICE); vib.vibrate(milliseconds); } public static void Vibrate(final Context context, long[] pattern,boolean isRepeat) { Vibrator vib = (Vibrator) context.getSystemService(Service.VIBRATOR_SERVICE); vib.vibrate(pattern, isRepeat ? 1 : -1);//-1為反覆震動 } }