Android快速开发不可或缺的11个工具类 (一)续篇。


NetUtils

NetUtils是判断网络状态的工具类,在网络时代,开发中绝对的不可或缺。

import android.app.Activity;import android.content.ComponentName;import android.content.Context;import android.content.Intent;import android.net.ConnectivityManager;import android.net.NetworkInfo;//跟网络相关的工具类public class NetUtils{private NetUtils(){/* cannot be instantiated */throw new UnsupportedOperationException("cannot be instantiated");}/** * 判断网络是否连接 *  * @param context * @return */public static boolean isConnected(Context context){ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);if (null != connectivity){NetworkInfo info = connectivity.getActiveNetworkInfo();if (null != info && info.isConnected()){if (info.getState() == NetworkInfo.State.CONNECTED){return true;}}}return false;}/** * 判断是否是wifi连接 */public static boolean isWifi(Context context){ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);if (cm == null)return false;return cm.getActiveNetworkInfo().getType() == ConnectivityManager.TYPE_WIFI;}/** * 打开网络设置界面 */public static void openSetting(Activity activity){Intent intent = new Intent("/");ComponentName cm = new ComponentName("com.android.settings","com.android.settings.WirelessSettings");intent.setComponent(cm);intent.setAction("android.intent.action.VIEW");activity.startActivityForResult(intent, 0);}}


ScreenUtils

可用于获取屏幕宽高,截屏的工具类

import android.app.Activity;import android.content.Context;import android.graphics.Bitmap;import android.graphics.Rect;import android.util.DisplayMetrics;import android.view.View;import android.view.WindowManager;//获得屏幕相关的辅助类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;}}


SDCardUtils

外部存储相关辅助工具类

import java.io.File;import android.os.Environment;import android.os.StatFs;//SD卡相关的辅助类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();}}


SPUtils

SharedPreferences工具类,作为存储和获取data下相关文件工具类,对SharedPreferences进行封装,使其使用更简单。

import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import java.util.Map;import android.content.Context;import android.content.SharedPreferences;public class SPUtils{public SPUtils(){/* cannot be instantiated */throw new UnsupportedOperationException("cannot be instantiated");}/** * 保存在手机里面的文件名 */public static final String FILE_NAME = "share_data";/** * 保存数据的方法,我们需要拿到保存数据的具体类型,然后根据类型调用不同的保存方法 *  * @param context * @param key * @param object */public static void put(Context context, String key, Object object){SharedPreferences sp = context.getSharedPreferences(FILE_NAME,Context.MODE_PRIVATE);SharedPreferences.Editor editor = sp.edit();if (object instanceof String){editor.putString(key, (String) object);} else if (object instanceof Integer){editor.putInt(key, (Integer) object);} else if (object instanceof Boolean){editor.putBoolean(key, (Boolean) object);} else if (object instanceof Float){editor.putFloat(key, (Float) object);} else if (object instanceof Long){editor.putLong(key, (Long) object);} else{editor.putString(key, object.toString());}SharedPreferencesCompat.apply(editor);}/** * 得到保存数据的方法,我们根据默认值得到保存的数据的具体类型,然后调用相对于的方法获取值 *  * @param context * @param key * @param defaultObject * @return */public static Object get(Context context, String key, Object defaultObject){SharedPreferences sp = context.getSharedPreferences(FILE_NAME,Context.MODE_PRIVATE);if (defaultObject instanceof String){return sp.getString(key, (String) defaultObject);} else if (defaultObject instanceof Integer){return sp.getInt(key, (Integer) defaultObject);} else if (defaultObject instanceof Boolean){return sp.getBoolean(key, (Boolean) defaultObject);} else if (defaultObject instanceof Float){return sp.getFloat(key, (Float) defaultObject);} else if (defaultObject instanceof Long){return sp.getLong(key, (Long) defaultObject);}return null;}/** * 移除某个key值已经对应的值 *  * @param context * @param key */public static void remove(Context context, String key){SharedPreferences sp = context.getSharedPreferences(FILE_NAME,Context.MODE_PRIVATE);SharedPreferences.Editor editor = sp.edit();editor.remove(key);SharedPreferencesCompat.apply(editor);}/** * 清除所有数据 *  * @param context */public static void clear(Context context){SharedPreferences sp = context.getSharedPreferences(FILE_NAME,Context.MODE_PRIVATE);SharedPreferences.Editor editor = sp.edit();editor.clear();SharedPreferencesCompat.apply(editor);}/** * 查询某个key是否已经存在 *  * @param context * @param key * @return */public static boolean contains(Context context, String key){SharedPreferences sp = context.getSharedPreferences(FILE_NAME,Context.MODE_PRIVATE);return sp.contains(key);}/** * 返回所有的键值对 *  * @param context * @return */public static Map<String, ?> getAll(Context context){SharedPreferences sp = context.getSharedPreferences(FILE_NAME,Context.MODE_PRIVATE);return sp.getAll();}/** * 创建一个解决SharedPreferencesCompat.apply方法的一个兼容类 *  * @author zhy *  */private static class SharedPreferencesCompat{private static final Method sApplyMethod = findApplyMethod();/** * 反射查找apply的方法 *  * @return */@SuppressWarnings({ "unchecked", "rawtypes" })private static Method findApplyMethod(){try{Class clz = SharedPreferences.Editor.class;return clz.getMethod("apply");} catch (NoSuchMethodException e){}return null;}/** * 如果找到则使用apply执行,否则使用commit *  * @param editor */public static void apply(SharedPreferences.Editor editor){try{if (sApplyMethod != null){sApplyMethod.invoke(editor);return;}} catch (IllegalArgumentException e){} catch (IllegalAccessException e){} catch (InvocationTargetException e){}editor.commit();}}}


ToastUtils

对系统Toast的封装,用起来更简单方便

import android.content.Context;import android.widget.Toast; //Toast统一管理类public class ToastUtils{private ToastUtils(){/* cannot be instantiated */throw new UnsupportedOperationException("cannot be instantiated");}public static boolean isShow = true;/** * 短时间显示Toast *  * @param context * @param message */public static void showShort(Context context, CharSequence message){if (isShow)Toast.makeText(context, message, Toast.LENGTH_SHORT).show();}/** * 短时间显示Toast *  * @param context * @param message */public static void showShort(Context context, int message){if (isShow)Toast.makeText(context, message, Toast.LENGTH_SHORT).show();}/** * 长时间显示Toast *  * @param context * @param message */public static void showLong(Context context, CharSequence message){if (isShow)Toast.makeText(context, message, Toast.LENGTH_LONG).show();}/** * 长时间显示Toast *  * @param context * @param message */public static void showLong(Context context, int message){if (isShow)Toast.makeText(context, message, Toast.LENGTH_LONG).show();}/** * 自定义显示Toast时间 *  * @param context * @param message * @param duration */public static void show(Context context, CharSequence message, int duration){if (isShow)Toast.makeText(context, message, duration).show();}/** * 自定义显示Toast时间 *  * @param context * @param message * @param duration */public static void show(Context context, int message, int duration){if (isShow)Toast.makeText(context, message, duration).show();}}


今天,Android不可或缺的开发工具类集合的分享就到这里,上篇为Android快速开发不可或缺的11个工具类 (一)。

本文转载自:http://www.devstore.cn/code/info/363.htm。

如无特殊说明,文章均为xiong_it原创,本文链接:http://blog.csdn.net/xiong_it/article/details/46005429


更多相关文章

  1. Android(安卓)中数据库查询方法 query() 中的 selectionArgs 的
  2. Android利用wireshark抓取网络数据包
  3. Android(安卓)获取屏幕高宽度,密度,通知栏高度,截图等常用方法
  4. Android(安卓)关于获取摄像头帧数据
  5. Android(安卓)创建SQLite数据库(一)
  6. Android测试框架或者工具对比
  7. 代码:android崩溃日志收集和处理
  8. mybatisplus的坑 insert标签insert into select无参数问题的解决
  9. python起点网月票榜字体反爬案例

随机推荐

  1. android sqlite查询数据时报错: get fiel
  2. Tinker使用
  3. Android面试知识点汇总
  4. Android(安卓)贝塞尔曲线的使用 操作
  5. 客户端按下登陆键后无反应
  6. Android将数据存放到SDCard
  7. android 屏幕适配问题
  8. android keyboard
  9. OpenGL ES之GLSurfaceView学习四:Android
  10. Android UI开发第二篇――多级列表(Expand