Android开发中4个常用的工具类【Toast、SharedPreferences、网络及屏幕操作】

作者:LovooGod 时间:2023-12-01 22:53:40 

本文实例讲述了Android开发中4个常用的工具类。分享给大家供大家参考,具体如下:

1、土司工具类(Toast管理)


/**
* Toast统一管理类
*
* @Project App_ZXing
* @Package com.android.scan
* @author chenlin
* @version 1.0
* @Date 2013年7月6日
* @Note TODO
*/
public class ToastUtil {
 private ToastUtil() {
   /* cannot be instantiated */
   throw new UnsupportedOperationException("cannot be instantiated");
 }
 public static boolean isShow = true;
 /**
  * 短时间显示Toast
  *
  * @param context
  * @param message
  */
 public static void show(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();
 }
}

2、SharedPreferences工具类


/**
* SharedPreferences封装类SPUtils
* @Project  App_ZXing
* @Package  com.android.scan
* @author   chenlin
* @version  1.0
* @Date    2013年6月6日
* @Note    TODO
*/
public class SPUtils {
 /**
  * 保存在手机里面的文件名
  */
 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();
   }
 }
}

3、网络工具类


/**
* 跟网络相关的工具类
* @Project  App_ZXing
* @Package  com.android.scan
* @author   chenlin
* @version  1.0
* @Date    2013年6月8日
* @Note    TODO
*/
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);
 }
}

4、获得屏幕相关的辅助类


/**
* 获得屏幕相关的辅助类
* @Project  App_ZXing
* @Package  com.android.scan
* @author   chenlin
* @version  1.0
* @Date    2013年6月6日
*/
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;
 }
}

希望本文所述对大家Android程序设计有所帮助。

来源:http://blog.csdn.net/lovoo/article/details/51610550

标签:Android,工具类,Toast,SharedPreferences
0
投稿

猜你喜欢

  • C#函数式程序设计之用闭包封装数据的实现代码

    2021-06-30 01:44:34
  • C#实现简单的聊天窗体

    2022-11-09 03:25:13
  • java实现代码统计小程序

    2022-03-08 23:15:24
  • java 内部类(匿名类,匿名对象,静态内部类)详解及实例

    2022-09-25 11:20:16
  • 详解SpringCloud的负载均衡

    2022-03-14 03:42:28
  • dotnet core链接mongodb代码实例

    2023-07-20 14:26:09
  • Jetpack Compose修饰符专项精讲

    2021-11-28 06:33:21
  • 详解Java后端优雅验证参数合法性

    2021-09-06 16:07:22
  • android桌面悬浮窗显示录屏时间控制效果

    2022-04-21 14:54:12
  • Spark调优多线程并行处理任务实现方式

    2023-08-21 15:43:53
  • 使用设计模式中的工厂方法模式进行C#编程的示例讲解

    2023-10-21 05:27:08
  • Java发送报文与接收报文的实例代码

    2023-07-09 04:44:01
  • Springcloud Config配置中心使用与相关介绍

    2021-07-13 05:15:17
  • mall整合SpringTask实现定时任务的方法示例

    2023-09-15 18:08:08
  • C#遍历得到checkboxlist选中值和设置选中项的代码

    2022-10-25 20:52:22
  • Android DataBinding手把手入门教程

    2023-04-29 18:51:24
  • Java判断所给年份是平年还是闰年

    2023-10-21 17:48:59
  • 深入讲解基于JDK的动态代理机制

    2022-07-19 07:13:32
  • android实现蓝牙app代码

    2021-07-08 07:52:15
  • Java垃圾回收器的方法和原理总结

    2022-06-27 07:11:46
  • asp之家 软件编程 m.aspxhome.com