• Android快速开发系列 10个常用工具类


    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38965311,本文出自【张鸿洋的博客】

    打开大家手上的项目,基本都会有一大批的辅助类,今天特此整理出10个基本每个项目中都会使用的工具类,用于快速开发~~

    在此感谢群里给我发项目中工具类的兄弟/姐妹~

    1、日志工具类L.java

    1. package com.zhy.utils;  
    2.   
    3. import android.util.Log;  
    4.   
    5. /** 
    6.  * Log统一管理类 
    7.  *  
    8.  *  
    9.  *  
    10.  */  
    11. public class L  
    12. {  
    13.   
    14.     private L()  
    15.     {  
    16.         /* cannot be instantiated */  
    17.         throw new UnsupportedOperationException("cannot be instantiated");  
    18.     }  
    19.   
    20.     public static boolean isDebug = true;// 是否需要打印bug,可以在application的onCreate函数里面初始化  
    21.     private static final String TAG = "way";  
    22.   
    23.     // 下面四个是默认tag的函数  
    24.     public static void i(String msg)  
    25.     {  
    26.         if (isDebug)  
    27.             Log.i(TAG, msg);  
    28.     }  
    29.   
    30.     public static void d(String msg)  
    31.     {  
    32.         if (isDebug)  
    33.             Log.d(TAG, msg);  
    34.     }  
    35.   
    36.     public static void e(String msg)  
    37.     {  
    38.         if (isDebug)  
    39.             Log.e(TAG, msg);  
    40.     }  
    41.   
    42.     public static void v(String msg)  
    43.     {  
    44.         if (isDebug)  
    45.             Log.v(TAG, msg);  
    46.     }  
    47.   
    48.     // 下面是传入自定义tag的函数  
    49.     public static void i(String tag, String msg)  
    50.     {  
    51.         if (isDebug)  
    52.             Log.i(tag, msg);  
    53.     }  
    54.   
    55.     public static void d(String tag, String msg)  
    56.     {  
    57.         if (isDebug)  
    58.             Log.i(tag, msg);  
    59.     }  
    60.   
    61.     public static void e(String tag, String msg)  
    62.     {  
    63.         if (isDebug)  
    64.             Log.i(tag, msg);  
    65.     }  
    66.   
    67.     public static void v(String tag, String msg)  
    68.     {  
    69.         if (isDebug)  
    70.             Log.i(tag, msg);  
    71.     }  
    72. }  
    package com.zhy.utils;
    
    import android.util.Log;
    
    /**
     * Log统一管理类
     * 
     * 
     * 
     */
    public class L
    {
    
    	private L()
    	{
    		/* cannot be instantiated */
    		throw new UnsupportedOperationException("cannot be instantiated");
    	}
    
    	public static boolean isDebug = true;// 是否需要打印bug,可以在application的onCreate函数里面初始化
    	private static final String TAG = "way";
    
    	// 下面四个是默认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);
    	}
    }

    网上看到的类,注释上应该原创作者的名字,很简单的一个类;网上也有很多提供把日志记录到SDCard上的,不过我是从来没记录过,所以引入个最简单的,大家可以进行评价是否需要扩充~~

    2、Toast统一管理类 

    1. package com.zhy.utils;  
    2.   
    3. import android.content.Context;  
    4. import android.widget.Toast;  
    5.   
    6. /** 
    7.  * Toast统一管理类 
    8.  *  
    9.  */  
    10. public class T  
    11. {  
    12.   
    13.     private T()  
    14.     {  
    15.         /* cannot be instantiated */  
    16.         throw new UnsupportedOperationException("cannot be instantiated");  
    17.     }  
    18.   
    19.     public static boolean isShow = true;  
    20.   
    21.     /** 
    22.      * 短时间显示Toast 
    23.      *  
    24.      * @param context 
    25.      * @param message 
    26.      */  
    27.     public static void showShort(Context context, CharSequence message)  
    28.     {  
    29.         if (isShow)  
    30.             Toast.makeText(context, message, Toast.LENGTH_SHORT).show();  
    31.     }  
    32.   
    33.     /** 
    34.      * 短时间显示Toast 
    35.      *  
    36.      * @param context 
    37.      * @param message 
    38.      */  
    39.     public static void showShort(Context context, int message)  
    40.     {  
    41.         if (isShow)  
    42.             Toast.makeText(context, message, Toast.LENGTH_SHORT).show();  
    43.     }  
    44.   
    45.     /** 
    46.      * 长时间显示Toast 
    47.      *  
    48.      * @param context 
    49.      * @param message 
    50.      */  
    51.     public static void showLong(Context context, CharSequence message)  
    52.     {  
    53.         if (isShow)  
    54.             Toast.makeText(context, message, Toast.LENGTH_LONG).show();  
    55.     }  
    56.   
    57.     /** 
    58.      * 长时间显示Toast 
    59.      *  
    60.      * @param context 
    61.      * @param message 
    62.      */  
    63.     public static void showLong(Context context, int message)  
    64.     {  
    65.         if (isShow)  
    66.             Toast.makeText(context, message, Toast.LENGTH_LONG).show();  
    67.     }  
    68.   
    69.     /** 
    70.      * 自定义显示Toast时间 
    71.      *  
    72.      * @param context 
    73.      * @param message 
    74.      * @param duration 
    75.      */  
    76.     public static void show(Context context, CharSequence message, int duration)  
    77.     {  
    78.         if (isShow)  
    79.             Toast.makeText(context, message, duration).show();  
    80.     }  
    81.   
    82.     /** 
    83.      * 自定义显示Toast时间 
    84.      *  
    85.      * @param context 
    86.      * @param message 
    87.      * @param duration 
    88.      */  
    89.     public static void show(Context context, int message, int duration)  
    90.     {  
    91.         if (isShow)  
    92.             Toast.makeText(context, message, duration).show();  
    93.     }  
    94.   
    95. }  
    package com.zhy.utils;
    
    import android.content.Context;
    import android.widget.Toast;
    
    /**
     * Toast统一管理类
     * 
     */
    public class T
    {
    
    	private T()
    	{
    		/* 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();
    	}
    
    }

    也是非常简单的一个封装,能省则省了~~

    3、SharedPreferences封装类SPUtils

    1. package com.zhy.utils;  
    2.   
    3. import java.lang.reflect.InvocationTargetException;  
    4. import java.lang.reflect.Method;  
    5. import java.util.Map;  
    6.   
    7. import android.content.Context;  
    8. import android.content.SharedPreferences;  
    9.   
    10. public class SPUtils  
    11. {  
    12.     /** 
    13.      * 保存在手机里面的文件名 
    14.      */  
    15.     public static final String FILE_NAME = "share_data";  
    16.   
    17.     /** 
    18.      * 保存数据的方法,我们需要拿到保存数据的具体类型,然后根据类型调用不同的保存方法 
    19.      *  
    20.      * @param context 
    21.      * @param key 
    22.      * @param object 
    23.      */  
    24.     public static void put(Context context, String key, Object object)  
    25.     {  
    26.   
    27.         SharedPreferences sp = context.getSharedPreferences(FILE_NAME,  
    28.                 Context.MODE_PRIVATE);  
    29.         SharedPreferences.Editor editor = sp.edit();  
    30.   
    31.         if (object instanceof String)  
    32.         {  
    33.             editor.putString(key, (String) object);  
    34.         } else if (object instanceof Integer)  
    35.         {  
    36.             editor.putInt(key, (Integer) object);  
    37.         } else if (object instanceof Boolean)  
    38.         {  
    39.             editor.putBoolean(key, (Boolean) object);  
    40.         } else if (object instanceof Float)  
    41.         {  
    42.             editor.putFloat(key, (Float) object);  
    43.         } else if (object instanceof Long)  
    44.         {  
    45.             editor.putLong(key, (Long) object);  
    46.         } else  
    47.         {  
    48.             editor.putString(key, object.toString());  
    49.         }  
    50.   
    51.         SharedPreferencesCompat.apply(editor);  
    52.     }  
    53.   
    54.     /** 
    55.      * 得到保存数据的方法,我们根据默认值得到保存的数据的具体类型,然后调用相对于的方法获取值 
    56.      *  
    57.      * @param context 
    58.      * @param key 
    59.      * @param defaultObject 
    60.      * @return 
    61.      */  
    62.     public static Object get(Context context, String key, Object defaultObject)  
    63.     {  
    64.         SharedPreferences sp = context.getSharedPreferences(FILE_NAME,  
    65.                 Context.MODE_PRIVATE);  
    66.   
    67.         if (defaultObject instanceof String)  
    68.         {  
    69.             return sp.getString(key, (String) defaultObject);  
    70.         } else if (defaultObject instanceof Integer)  
    71.         {  
    72.             return sp.getInt(key, (Integer) defaultObject);  
    73.         } else if (defaultObject instanceof Boolean)  
    74.         {  
    75.             return sp.getBoolean(key, (Boolean) defaultObject);  
    76.         } else if (defaultObject instanceof Float)  
    77.         {  
    78.             return sp.getFloat(key, (Float) defaultObject);  
    79.         } else if (defaultObject instanceof Long)  
    80.         {  
    81.             return sp.getLong(key, (Long) defaultObject);  
    82.         }  
    83.   
    84.         return null;  
    85.     }  
    86.   
    87.     /** 
    88.      * 移除某个key值已经对应的值 
    89.      * @param context 
    90.      * @param key 
    91.      */  
    92.     public static void remove(Context context, String key)  
    93.     {  
    94.         SharedPreferences sp = context.getSharedPreferences(FILE_NAME,  
    95.                 Context.MODE_PRIVATE);  
    96.         SharedPreferences.Editor editor = sp.edit();  
    97.         editor.remove(key);  
    98.         SharedPreferencesCompat.apply(editor);  
    99.     }  
    100.   
    101.     /** 
    102.      * 清除所有数据 
    103.      * @param context 
    104.      */  
    105.     public static void clear(Context context)  
    106.     {  
    107.         SharedPreferences sp = context.getSharedPreferences(FILE_NAME,  
    108.                 Context.MODE_PRIVATE);  
    109.         SharedPreferences.Editor editor = sp.edit();  
    110.         editor.clear();  
    111.         SharedPreferencesCompat.apply(editor);  
    112.     }  
    113.   
    114.     /** 
    115.      * 查询某个key是否已经存在 
    116.      * @param context 
    117.      * @param key 
    118.      * @return 
    119.      */  
    120.     public static boolean contains(Context context, String key)  
    121.     {  
    122.         SharedPreferences sp = context.getSharedPreferences(FILE_NAME,  
    123.                 Context.MODE_PRIVATE);  
    124.         return sp.contains(key);  
    125.     }  
    126.   
    127.     /** 
    128.      * 返回所有的键值对 
    129.      *  
    130.      * @param context 
    131.      * @return 
    132.      */  
    133.     public static Map<String, ?> getAll(Context context)  
    134.     {  
    135.         SharedPreferences sp = context.getSharedPreferences(FILE_NAME,  
    136.                 Context.MODE_PRIVATE);  
    137.         return sp.getAll();  
    138.     }  
    139.   
    140.     /** 
    141.      * 创建一个解决SharedPreferencesCompat.apply方法的一个兼容类 
    142.      *  
    143.      * @author zhy 
    144.      *  
    145.      */  
    146.     private static class SharedPreferencesCompat  
    147.     {  
    148.         private static final Method sApplyMethod = findApplyMethod();  
    149.   
    150.         /** 
    151.          * 反射查找apply的方法 
    152.          *  
    153.          * @return 
    154.          */  
    155.         @SuppressWarnings({ "unchecked", "rawtypes" })  
    156.         private static Method findApplyMethod()  
    157.         {  
    158.             try  
    159.             {  
    160.                 Class clz = SharedPreferences.Editor.class;  
    161.                 return clz.getMethod("apply");  
    162.             } catch (NoSuchMethodException e)  
    163.             {  
    164.             }  
    165.   
    166.             return null;  
    167.         }  
    168.   
    169.         /** 
    170.          * 如果找到则使用apply执行,否则使用commit 
    171.          *  
    172.          * @param editor 
    173.          */  
    174.         public static void apply(SharedPreferences.Editor editor)  
    175.         {  
    176.             try  
    177.             {  
    178.                 if (sApplyMethod != null)  
    179.                 {  
    180.                     sApplyMethod.invoke(editor);  
    181.                     return;  
    182.                 }  
    183.             } catch (IllegalArgumentException e)  
    184.             {  
    185.             } catch (IllegalAccessException e)  
    186.             {  
    187.             } catch (InvocationTargetException e)  
    188.             {  
    189.             }  
    190.             editor.commit();  
    191.         }  
    192.     }  
    193.   
    194. }  
    package com.zhy.utils;
    
    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 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();
    		}
    	}
    
    }
    

    对SharedPreference的使用做了建议的封装,对外公布出put,get,remove,clear等等方法;

    注意一点,里面所有的commit操作使用了SharedPreferencesCompat.apply进行了替代,目的是尽可能的使用apply代替commit

    首先说下为什么,因为commit方法是同步的,并且我们很多时候的commit操作都是UI线程中,毕竟是IO操作,尽可能异步;

    所以我们使用apply进行替代,apply异步的进行写入;

    但是apply相当于commit来说是new API呢,为了更好的兼容,我们做了适配;

    SharedPreferencesCompat也可以给大家创建兼容类提供了一定的参考~~

    4、单位转换类 DensityUtils

    1. package com.zhy.utils;  
    2.   
    3. import android.content.Context;  
    4. import android.util.TypedValue;  
    5.   
    6. /** 
    7.  * 常用单位转换的辅助类 
    8.  *  
    9.  *  
    10.  *  
    11.  */  
    12. public class DensityUtils  
    13. {  
    14.     private DensityUtils()  
    15.     {  
    16.         /* cannot be instantiated */  
    17.         throw new UnsupportedOperationException("cannot be instantiated");  
    18.     }  
    19.   
    20.     /** 
    21.      * dp转px 
    22.      *  
    23.      * @param context 
    24.      * @param val 
    25.      * @return 
    26.      */  
    27.     public static int dp2px(Context context, float dpVal)  
    28.     {  
    29.         return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,  
    30.                 dpVal, context.getResources().getDisplayMetrics());  
    31.     }  
    32.   
    33.     /** 
    34.      * sp转px 
    35.      *  
    36.      * @param context 
    37.      * @param val 
    38.      * @return 
    39.      */  
    40.     public static int sp2px(Context context, float spVal)  
    41.     {  
    42.         return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP,  
    43.                 spVal, context.getResources().getDisplayMetrics());  
    44.     }  
    45.   
    46.     /** 
    47.      * px转dp 
    48.      *  
    49.      * @param context 
    50.      * @param pxVal 
    51.      * @return 
    52.      */  
    53.     public static float px2dp(Context context, float pxVal)  
    54.     {  
    55.         final float scale = context.getResources().getDisplayMetrics().density;  
    56.         return (pxVal / scale);  
    57.     }  
    58.   
    59.     /** 
    60.      * px转sp 
    61.      *  
    62.      * @param fontScale 
    63.      * @param pxVal 
    64.      * @return 
    65.      */  
    66.     public static float px2sp(Context context, float pxVal)  
    67.     {  
    68.         return (pxVal / context.getResources().getDisplayMetrics().scaledDensity);  
    69.     }  
    70.   
    71. }  
    package com.zhy.utils;
    
    import android.content.Context;
    import android.util.TypedValue;
    
    /**
     * 常用单位转换的辅助类
     * 
     * 
     * 
     */
    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);
    	}
    
    }
    

    5、SD卡相关辅助类 SDCardUtils

    1. package com.zhy.utils;  
    2.   
    3. import java.io.File;  
    4.   
    5. import android.os.Environment;  
    6. import android.os.StatFs;  
    7.   
    8. /** 
    9.  * SD卡相关的辅助类 
    10.  *  
    11.  *  
    12.  *  
    13.  */  
    14. public class SDCardUtils  
    15. {  
    16.     private SDCardUtils()  
    17.     {  
    18.         /* cannot be instantiated */  
    19.         throw new UnsupportedOperationException("cannot be instantiated");  
    20.     }  
    21.   
    22.     /** 
    23.      * 判断SDCard是否可用 
    24.      *  
    25.      * @return 
    26.      */  
    27.     public static boolean isSDCardEnable()  
    28.     {  
    29.         return Environment.getExternalStorageState().equals(  
    30.                 Environment.MEDIA_MOUNTED);  
    31.   
    32.     }  
    33.   
    34.     /** 
    35.      * 获取SD卡路径 
    36.      *  
    37.      * @return 
    38.      */  
    39.     public static String getSDCardPath()  
    40.     {  
    41.         return Environment.getExternalStorageDirectory().getAbsolutePath()  
    42.                 + File.separator;  
    43.     }  
    44.   
    45.     /** 
    46.      * 获取SD卡的剩余容量 单位byte 
    47.      *  
    48.      * @return 
    49.      */  
    50.     public static long getSDCardAllSize()  
    51.     {  
    52.         if (isSDCardEnable())  
    53.         {  
    54.             StatFs stat = new StatFs(getSDCardPath());  
    55.             // 获取空闲的数据块的数量  
    56.             long availableBlocks = (long) stat.getAvailableBlocks() - 4;  
    57.             // 获取单个数据块的大小(byte)  
    58.             long freeBlocks = stat.getAvailableBlocks();  
    59.             return freeBlocks * availableBlocks;  
    60.         }  
    61.         return 0;  
    62.     }  
    63.   
    64.     /** 
    65.      * 获取指定路径所在空间的剩余可用容量字节数,单位byte 
    66.      *  
    67.      * @param filePath 
    68.      * @return 容量字节 SDCard可用空间,内部存储可用空间 
    69.      */  
    70.     public static long getFreeBytes(String filePath)  
    71.     {  
    72.         // 如果是sd卡的下的路径,则获取sd卡可用容量  
    73.         if (filePath.startsWith(getSDCardPath()))  
    74.         {  
    75.             filePath = getSDCardPath();  
    76.         } else  
    77.         {// 如果是内部存储的路径,则获取内存存储的可用容量  
    78.             filePath = Environment.getDataDirectory().getAbsolutePath();  
    79.         }  
    80.         StatFs stat = new StatFs(filePath);  
    81.         long availableBlocks = (long) stat.getAvailableBlocks() - 4;  
    82.         return stat.getBlockSize() * availableBlocks;  
    83.     }  
    84.   
    85.     /** 
    86.      * 获取系统存储路径 
    87.      *  
    88.      * @return 
    89.      */  
    90.     public static String getRootDirectoryPath()  
    91.     {  
    92.         return Environment.getRootDirectory().getAbsolutePath();  
    93.     }  
    94.   
    95.   
    96. }  
    package com.zhy.utils;
    
    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();
    	}
    
    
    }
    

    6、屏幕相关辅助类 ScreenUtils

    1. package com.zhy.utils;  
    2.   
    3. import android.app.Activity;  
    4. import android.content.Context;  
    5. import android.graphics.Bitmap;  
    6. import android.graphics.Rect;  
    7. import android.util.DisplayMetrics;  
    8. import android.view.View;  
    9. import android.view.WindowManager;  
    10.   
    11. /** 
    12.  * 获得屏幕相关的辅助类 
    13.  *  
    14.  *  
    15.  *  
    16.  */  
    17. public class ScreenUtils  
    18. {  
    19.     private ScreenUtils()  
    20.     {  
    21.         /* cannot be instantiated */  
    22.         throw new UnsupportedOperationException("cannot be instantiated");  
    23.     }  
    24.   
    25.     /** 
    26.      * 获得屏幕高度 
    27.      *  
    28.      * @param context 
    29.      * @return 
    30.      */  
    31.     public static int getScreenWidth(Context context)  
    32.     {  
    33.         WindowManager wm = (WindowManager) context  
    34.                 .getSystemService(Context.WINDOW_SERVICE);  
    35.         DisplayMetrics outMetrics = new DisplayMetrics();  
    36.         wm.getDefaultDisplay().getMetrics(outMetrics);  
    37.         return outMetrics.widthPixels;  
    38.     }  
    39.   
    40.     /** 
    41.      * 获得屏幕宽度 
    42.      *  
    43.      * @param context 
    44.      * @return 
    45.      */  
    46.     public static int getScreenHeight(Context context)  
    47.     {  
    48.         WindowManager wm = (WindowManager) context  
    49.                 .getSystemService(Context.WINDOW_SERVICE);  
    50.         DisplayMetrics outMetrics = new DisplayMetrics();  
    51.         wm.getDefaultDisplay().getMetrics(outMetrics);  
    52.         return outMetrics.heightPixels;  
    53.     }  
    54.   
    55.     /** 
    56.      * 获得状态栏的高度 
    57.      *  
    58.      * @param context 
    59.      * @return 
    60.      */  
    61.     public static int getStatusHeight(Context context)  
    62.     {  
    63.   
    64.         int statusHeight = -1;  
    65.         try  
    66.         {  
    67.             Class<?> clazz = Class.forName("com.android.internal.R$dimen");  
    68.             Object object = clazz.newInstance();  
    69.             int height = Integer.parseInt(clazz.getField("status_bar_height")  
    70.                     .get(object).toString());  
    71.             statusHeight = context.getResources().getDimensionPixelSize(height);  
    72.         } catch (Exception e)  
    73.         {  
    74.             e.printStackTrace();  
    75.         }  
    76.         return statusHeight;  
    77.     }  
    78.   
    79.     /** 
    80.      * 获取当前屏幕截图,包含状态栏 
    81.      *  
    82.      * @param activity 
    83.      * @return 
    84.      */  
    85.     public static Bitmap snapShotWithStatusBar(Activity activity)  
    86.     {  
    87.         View view = activity.getWindow().getDecorView();  
    88.         view.setDrawingCacheEnabled(true);  
    89.         view.buildDrawingCache();  
    90.         Bitmap bmp = view.getDrawingCache();  
    91.         int width = getScreenWidth(activity);  
    92.         int height = getScreenHeight(activity);  
    93.         Bitmap bp = null;  
    94.         bp = Bitmap.createBitmap(bmp, 0, 0, width, height);  
    95.         view.destroyDrawingCache();  
    96.         return bp;  
    97.   
    98.     }  
    99.   
    100.     /** 
    101.      * 获取当前屏幕截图,不包含状态栏 
    102.      *  
    103.      * @param activity 
    104.      * @return 
    105.      */  
    106.     public static Bitmap snapShotWithoutStatusBar(Activity activity)  
    107.     {  
    108.         View view = activity.getWindow().getDecorView();  
    109.         view.setDrawingCacheEnabled(true);  
    110.         view.buildDrawingCache();  
    111.         Bitmap bmp = view.getDrawingCache();  
    112.         Rect frame = new Rect();  
    113.         activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);  
    114.         int statusBarHeight = frame.top;  
    115.   
    116.         int width = getScreenWidth(activity);  
    117.         int height = getScreenHeight(activity);  
    118.         Bitmap bp = null;  
    119.         bp = Bitmap.createBitmap(bmp, 0, statusBarHeight, width, height  
    120.                 - statusBarHeight);  
    121.         view.destroyDrawingCache();  
    122.         return bp;  
    123.   
    124.     }  
    125.   
    126. }  
    package com.zhy.utils;
    
    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;
    
    	}
    
    }
    

    7、App相关辅助类

    1. package com.zhy.utils;  
    2.   
    3. import android.content.Context;  
    4. import android.content.pm.PackageInfo;  
    5. import android.content.pm.PackageManager;  
    6. import android.content.pm.PackageManager.NameNotFoundException;  
    7.   
    8. /** 
    9.  * 跟App相关的辅助类 
    10.  *  
    11.  *  
    12.  *  
    13.  */  
    14. public class AppUtils  
    15. {  
    16.   
    17.     private AppUtils()  
    18.     {  
    19.         /* cannot be instantiated */  
    20.         throw new UnsupportedOperationException("cannot be instantiated");  
    21.   
    22.     }  
    23.   
    24.     /** 
    25.      * 获取应用程序名称 
    26.      */  
    27.     public static String getAppName(Context context)  
    28.     {  
    29.         try  
    30.         {  
    31.             PackageManager packageManager = context.getPackageManager();  
    32.             PackageInfo packageInfo = packageManager.getPackageInfo(  
    33.                     context.getPackageName(), 0);  
    34.             int labelRes = packageInfo.applicationInfo.labelRes;  
    35.             return context.getResources().getString(labelRes);  
    36.         } catch (NameNotFoundException e)  
    37.         {  
    38.             e.printStackTrace();  
    39.         }  
    40.         return null;  
    41.     }  
    42.   
    43.     /** 
    44.      * [获取应用程序版本名称信息] 
    45.      *  
    46.      * @param context 
    47.      * @return 当前应用的版本名称 
    48.      */  
    49.     public static String getVersionName(Context context)  
    50.     {  
    51.         try  
    52.         {  
    53.             PackageManager packageManager = context.getPackageManager();  
    54.             PackageInfo packageInfo = packageManager.getPackageInfo(  
    55.                     context.getPackageName(), 0);  
    56.             return packageInfo.versionName;  
    57.   
    58.         } catch (NameNotFoundException e)  
    59.         {  
    60.             e.printStackTrace();  
    61.         }  
    62.         return null;  
    63.     }  
    64.   
    65. }  
    package com.zhy.utils;
    
    import android.content.Context;
    import android.content.pm.PackageInfo;
    import android.content.pm.PackageManager;
    import android.content.pm.PackageManager.NameNotFoundException;
    
    /**
     * 跟App相关的辅助类
     * 
     * 
     * 
     */
    public class AppUtils
    {
    
    	private AppUtils()
    	{
    		/* cannot be instantiated */
    		throw new UnsupportedOperationException("cannot be instantiated");
    
    	}
    
    	/**
    	 * 获取应用程序名称
    	 */
    	public static String getAppName(Context context)
    	{
    		try
    		{
    			PackageManager packageManager = context.getPackageManager();
    			PackageInfo packageInfo = packageManager.getPackageInfo(
    					context.getPackageName(), 0);
    			int labelRes = packageInfo.applicationInfo.labelRes;
    			return context.getResources().getString(labelRes);
    		} catch (NameNotFoundException e)
    		{
    			e.printStackTrace();
    		}
    		return null;
    	}
    
    	/**
    	 * [获取应用程序版本名称信息]
    	 * 
    	 * @param context
    	 * @return 当前应用的版本名称
    	 */
    	public static String getVersionName(Context context)
    	{
    		try
    		{
    			PackageManager packageManager = context.getPackageManager();
    			PackageInfo packageInfo = packageManager.getPackageInfo(
    					context.getPackageName(), 0);
    			return packageInfo.versionName;
    
    		} catch (NameNotFoundException e)
    		{
    			e.printStackTrace();
    		}
    		return null;
    	}
    
    }
    

    8、软键盘相关辅助类KeyBoardUtils

    1. package com.zhy.utils;  
    2.   
    3. import android.content.Context;  
    4. import android.view.inputmethod.InputMethodManager;  
    5. import android.widget.EditText;  
    6.   
    7. /** 
    8.  * 打开或关闭软键盘 
    9.  *  
    10.  * @author zhy 
    11.  *  
    12.  */  
    13. public class KeyBoardUtils  
    14. {  
    15.     /** 
    16.      * 打卡软键盘 
    17.      *  
    18.      * @param mEditText 
    19.      *            输入框 
    20.      * @param mContext 
    21.      *            上下文 
    22.      */  
    23.     public static void openKeybord(EditText mEditText, Context mContext)  
    24.     {  
    25.         InputMethodManager imm = (InputMethodManager) mContext  
    26.                 .getSystemService(Context.INPUT_METHOD_SERVICE);  
    27.         imm.showSoftInput(mEditText, InputMethodManager.RESULT_SHOWN);  
    28.         imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,  
    29.                 InputMethodManager.HIDE_IMPLICIT_ONLY);  
    30.     }  
    31.   
    32.     /** 
    33.      * 关闭软键盘 
    34.      *  
    35.      * @param mEditText 
    36.      *            输入框 
    37.      * @param mContext 
    38.      *            上下文 
    39.      */  
    40.     public static void closeKeybord(EditText mEditText, Context mContext)  
    41.     {  
    42.         InputMethodManager imm = (InputMethodManager) mContext  
    43.                 .getSystemService(Context.INPUT_METHOD_SERVICE);  
    44.   
    45.         imm.hideSoftInputFromWindow(mEditText.getWindowToken(), 0);  
    46.     }  
    47. }  
    package com.zhy.utils;
    
    import android.content.Context;
    import android.view.inputmethod.InputMethodManager;
    import android.widget.EditText;
    
    /**
     * 打开或关闭软键盘
     * 
     * @author zhy
     * 
     */
    public class KeyBoardUtils
    {
    	/**
    	 * 打卡软键盘
    	 * 
    	 * @param mEditText
    	 *            输入框
    	 * @param mContext
    	 *            上下文
    	 */
    	public static void openKeybord(EditText mEditText, Context mContext)
    	{
    		InputMethodManager imm = (InputMethodManager) mContext
    				.getSystemService(Context.INPUT_METHOD_SERVICE);
    		imm.showSoftInput(mEditText, InputMethodManager.RESULT_SHOWN);
    		imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,
    				InputMethodManager.HIDE_IMPLICIT_ONLY);
    	}
    
    	/**
    	 * 关闭软键盘
    	 * 
    	 * @param mEditText
    	 *            输入框
    	 * @param mContext
    	 *            上下文
    	 */
    	public static void closeKeybord(EditText mEditText, Context mContext)
    	{
    		InputMethodManager imm = (InputMethodManager) mContext
    				.getSystemService(Context.INPUT_METHOD_SERVICE);
    
    		imm.hideSoftInputFromWindow(mEditText.getWindowToken(), 0);
    	}
    }
    

    9、网络相关辅助类 NetUtils

    1. package com.zhy.utils;  
    2.   
    3. import android.app.Activity;  
    4. import android.content.ComponentName;  
    5. import android.content.Context;  
    6. import android.content.Intent;  
    7. import android.net.ConnectivityManager;  
    8. import android.net.NetworkInfo;  
    9.   
    10. /** 
    11.  * 跟网络相关的工具类 
    12.  *  
    13.  *  
    14.  *  
    15.  */  
    16. public class NetUtils  
    17. {  
    18.     private NetUtils()  
    19.     {  
    20.         /* cannot be instantiated */  
    21.         throw new UnsupportedOperationException("cannot be instantiated");  
    22.     }  
    23.   
    24.     /** 
    25.      * 判断网络是否连接 
    26.      *  
    27.      * @param context 
    28.      * @return 
    29.      */  
    30.     public static boolean isConnected(Context context)  
    31.     {  
    32.   
    33.         ConnectivityManager connectivity = (ConnectivityManager) context  
    34.                 .getSystemService(Context.CONNECTIVITY_SERVICE);  
    35.   
    36.         if (null != connectivity)  
    37.         {  
    38.   
    39.             NetworkInfo info = connectivity.getActiveNetworkInfo();  
    40.             if (null != info && info.isConnected())  
    41.             {  
    42.                 if (info.getState() == NetworkInfo.State.CONNECTED)  
    43.                 {  
    44.                     return true;  
    45.                 }  
    46.             }  
    47.         }  
    48.         return false;  
    49.     }  
    50.   
    51.     /** 
    52.      * 判断是否是wifi连接 
    53.      */  
    54.     public static boolean isWifi(Context context)  
    55.     {  
    56.         ConnectivityManager cm = (ConnectivityManager) context  
    57.                 .getSystemService(Context.CONNECTIVITY_SERVICE);  
    58.   
    59.         if (cm == null)  
    60.             return false;  
    61.         return cm.getActiveNetworkInfo().getType() == ConnectivityManager.TYPE_WIFI;  
    62.   
    63.     }  
    64.   
    65.     /** 
    66.      * 打开网络设置界面 
    67.      */  
    68.     public static void openSetting(Activity activity)  
    69.     {  
    70.         Intent intent = new Intent("/");  
    71.         ComponentName cm = new ComponentName("com.android.settings",  
    72.                 "com.android.settings.WirelessSettings");  
    73.         intent.setComponent(cm);  
    74.         intent.setAction("android.intent.action.VIEW");  
    75.         activity.startActivityForResult(intent, 0);  
    76.     }  
    77.   
    78. }  
    package com.zhy.utils;
    
    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);
    	}
    
    }
    

    10、Http相关辅助类 HttpUtils

    1. package com.zhy.utils;  
    2.   
    3. import java.io.BufferedReader;  
    4. import java.io.ByteArrayOutputStream;  
    5. import java.io.IOException;  
    6. import java.io.InputStream;  
    7. import java.io.InputStreamReader;  
    8. import java.io.PrintWriter;  
    9. import java.net.HttpURLConnection;  
    10. import java.net.URL;  
    11.   
    12. /** 
    13.  * Http请求的工具类 
    14.  *  
    15.  * @author zhy 
    16.  *  
    17.  */  
    18. public class HttpUtils  
    19. {  
    20.   
    21.     private static final int TIMEOUT_IN_MILLIONS = 5000;  
    22.   
    23.     public interface CallBack  
    24.     {  
    25.         void onRequestComplete(String result);  
    26.     }  
    27.   
    28.   
    29.     /** 
    30.      * 异步的Get请求 
    31.      *  
    32.      * @param urlStr 
    33.      * @param callBack 
    34.      */  
    35.     public static void doGetAsyn(final String urlStr, final CallBack callBack)  
    36.     {  
    37.         new Thread()  
    38.         {  
    39.             public void run()  
    40.             {  
    41.                 try  
    42.                 {  
    43.                     String result = doGet(urlStr);  
    44.                     if (callBack != null)  
    45.                     {  
    46.                         callBack.onRequestComplete(result);  
    47.                     }  
    48.                 } catch (Exception e)  
    49.                 {  
    50.                     e.printStackTrace();  
    51.                 }  
    52.   
    53.             };  
    54.         }.start();  
    55.     }  
    56.   
    57.     /** 
    58.      * 异步的Post请求 
    59.      * @param urlStr 
    60.      * @param params 
    61.      * @param callBack 
    62.      * @throws Exception 
    63.      */  
    64.     public static void doPostAsyn(final String urlStr, final String params,  
    65.             final CallBack callBack) throws Exception  
    66.     {  
    67.         new Thread()  
    68.         {  
    69.             public void run()  
    70.             {  
    71.                 try  
    72.                 {  
    73.                     String result = doPost(urlStr, params);  
    74.                     if (callBack != null)  
    75.                     {  
    76.                         callBack.onRequestComplete(result);  
    77.                     }  
    78.                 } catch (Exception e)  
    79.                 {  
    80.                     e.printStackTrace();  
    81.                 }  
    82.   
    83.             };  
    84.         }.start();  
    85.   
    86.     }  
    87.   
    88.     /** 
    89.      * Get请求,获得返回数据 
    90.      *  
    91.      * @param urlStr 
    92.      * @return 
    93.      * @throws Exception 
    94.      */  
    95.     public static String doGet(String urlStr)   
    96.     {  
    97.         URL url = null;  
    98.         HttpURLConnection conn = null;  
    99.         InputStream is = null;  
    100.         ByteArrayOutputStream baos = null;  
    101.         try  
    102.         {  
    103.             url = new URL(urlStr);  
    104.             conn = (HttpURLConnection) url.openConnection();  
    105.             conn.setReadTimeout(TIMEOUT_IN_MILLIONS);  
    106.             conn.setConnectTimeout(TIMEOUT_IN_MILLIONS);  
    107.             conn.setRequestMethod("GET");  
    108.             conn.setRequestProperty("accept", "*/*");  
    109.             conn.setRequestProperty("connection", "Keep-Alive");  
    110.             if (conn.getResponseCode() == 200)  
    111.             {  
    112.                 is = conn.getInputStream();  
    113.                 baos = new ByteArrayOutputStream();  
    114.                 int len = -1;  
    115.                 byte[] buf = new byte[128];  
    116.   
    117.                 while ((len = is.read(buf)) != -1)  
    118.                 {  
    119.                     baos.write(buf, 0, len);  
    120.                 }  
    121.                 baos.flush();  
    122.                 return baos.toString();  
    123.             } else  
    124.             {  
    125.                 throw new RuntimeException(" responseCode is not 200 ... ");  
    126.             }  
    127.   
    128.         } catch (Exception e)  
    129.         {  
    130.             e.printStackTrace();  
    131.         } finally  
    132.         {  
    133.             try  
    134.             {  
    135.                 if (is != null)  
    136.                     is.close();  
    137.             } catch (IOException e)  
    138.             {  
    139.             }  
    140.             try  
    141.             {  
    142.                 if (baos != null)  
    143.                     baos.close();  
    144.             } catch (IOException e)  
    145.             {  
    146.             }  
    147.             conn.disconnect();  
    148.         }  
    149.           
    150.         return null ;  
    151.   
    152.     }  
    153.   
    154.     /**  
    155.      * 向指定 URL 发送POST方法的请求  
    156.      *   
    157.      * @param url  
    158.      *            发送请求的 URL  
    159.      * @param param  
    160.      *            请求参数,请求参数应该是 name1=value1&name2=value2 的形式。  
    161.      * @return 所代表远程资源的响应结果  
    162.      * @throws Exception  
    163.      */  
    164.     public static String doPost(String url, String param)   
    165.     {  
    166.         PrintWriter out = null;  
    167.         BufferedReader in = null;  
    168.         String result = "";  
    169.         try  
    170.         {  
    171.             URL realUrl = new URL(url);  
    172.             // 打开和URL之间的连接  
    173.             HttpURLConnection conn = (HttpURLConnection) realUrl  
    174.                     .openConnection();  
    175.             // 设置通用的请求属性  
    176.             conn.setRequestProperty("accept", "*/*");  
    177.             conn.setRequestProperty("connection", "Keep-Alive");  
    178.             conn.setRequestMethod("POST");  
    179.             conn.setRequestProperty("Content-Type",  
    180.                     "application/x-www-form-urlencoded");  
    181.             conn.setRequestProperty("charset", "utf-8");  
    182.             conn.setUseCaches(false);  
    183.             // 发送POST请求必须设置如下两行  
    184.             conn.setDoOutput(true);  
    185.             conn.setDoInput(true);  
    186.             conn.setReadTimeout(TIMEOUT_IN_MILLIONS);  
    187.             conn.setConnectTimeout(TIMEOUT_IN_MILLIONS);  
    188.   
    189.             if (param != null && !param.trim().equals(""))  
    190.             {  
    191.                 // 获取URLConnection对象对应的输出流  
    192.                 out = new PrintWriter(conn.getOutputStream());  
    193.                 // 发送请求参数  
    194.                 out.print(param);  
    195.                 // flush输出流的缓冲  
    196.                 out.flush();  
    197.             }  
    198.             // 定义BufferedReader输入流来读取URL的响应  
    199.             in = new BufferedReader(  
    200.                     new InputStreamReader(conn.getInputStream()));  
    201.             String line;  
    202.             while ((line = in.readLine()) != null)  
    203.             {  
    204.                 result += line;  
    205.             }  
    206.         } catch (Exception e)  
    207.         {  
    208.             e.printStackTrace();  
    209.         }  
    210.         // 使用finally块来关闭输出流、输入流  
    211.         finally  
    212.         {  
    213.             try  
    214.             {  
    215.                 if (out != null)  
    216.                 {  
    217.                     out.close();  
    218.                 }  
    219.                 if (in != null)  
    220.                 {  
    221.                     in.close();  
    222.                 }  
    223.             } catch (IOException ex)  
    224.             {  
    225.                 ex.printStackTrace();  
    226.             }  
    227.         }  
    228.         return result;  
    229.     }  
    230. }  
    package com.zhy.utils;
    
    import java.io.BufferedReader;
    import java.io.ByteArrayOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.net.HttpURLConnection;
    import java.net.URL;
    
    /**
     * Http请求的工具类
     * 
     * @author zhy
     * 
     */
    public class HttpUtils
    {
    
    	private static final int TIMEOUT_IN_MILLIONS = 5000;
    
    	public interface CallBack
    	{
    		void onRequestComplete(String result);
    	}
    
    
    	/**
    	 * 异步的Get请求
    	 * 
    	 * @param urlStr
    	 * @param callBack
    	 */
    	public static void doGetAsyn(final String urlStr, final CallBack callBack)
    	{
    		new Thread()
    		{
    			public void run()
    			{
    				try
    				{
    					String result = doGet(urlStr);
    					if (callBack != null)
    					{
    						callBack.onRequestComplete(result);
    					}
    				} catch (Exception e)
    				{
    					e.printStackTrace();
    				}
    
    			};
    		}.start();
    	}
    
    	/**
    	 * 异步的Post请求
    	 * @param urlStr
    	 * @param params
    	 * @param callBack
    	 * @throws Exception
    	 */
    	public static void doPostAsyn(final String urlStr, final String params,
    			final CallBack callBack) throws Exception
    	{
    		new Thread()
    		{
    			public void run()
    			{
    				try
    				{
    					String result = doPost(urlStr, params);
    					if (callBack != null)
    					{
    						callBack.onRequestComplete(result);
    					}
    				} catch (Exception e)
    				{
    					e.printStackTrace();
    				}
    
    			};
    		}.start();
    
    	}
    
    	/**
    	 * Get请求,获得返回数据
    	 * 
    	 * @param urlStr
    	 * @return
    	 * @throws Exception
    	 */
    	public static String doGet(String urlStr) 
    	{
    		URL url = null;
    		HttpURLConnection conn = null;
    		InputStream is = null;
    		ByteArrayOutputStream baos = null;
    		try
    		{
    			url = new URL(urlStr);
    			conn = (HttpURLConnection) url.openConnection();
    			conn.setReadTimeout(TIMEOUT_IN_MILLIONS);
    			conn.setConnectTimeout(TIMEOUT_IN_MILLIONS);
    			conn.setRequestMethod("GET");
    			conn.setRequestProperty("accept", "*/*");
    			conn.setRequestProperty("connection", "Keep-Alive");
    			if (conn.getResponseCode() == 200)
    			{
    				is = conn.getInputStream();
    				baos = new ByteArrayOutputStream();
    				int len = -1;
    				byte[] buf = new byte[128];
    
    				while ((len = is.read(buf)) != -1)
    				{
    					baos.write(buf, 0, len);
    				}
    				baos.flush();
    				return baos.toString();
    			} else
    			{
    				throw new RuntimeException(" responseCode is not 200 ... ");
    			}
    
    		} catch (Exception e)
    		{
    			e.printStackTrace();
    		} finally
    		{
    			try
    			{
    				if (is != null)
    					is.close();
    			} catch (IOException e)
    			{
    			}
    			try
    			{
    				if (baos != null)
    					baos.close();
    			} catch (IOException e)
    			{
    			}
    			conn.disconnect();
    		}
    		
    		return null ;
    
    	}
    
    	/**
    	 * 向指定 URL 发送POST方法的请求
    	 * 
    	 * @param url
    	 *            发送请求的 URL
    	 * @param param
    	 *            请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
    	 * @return 所代表远程资源的响应结果
    	 * @throws Exception
    	 */
    	public static String doPost(String url, String param) 
    	{
    		PrintWriter out = null;
    		BufferedReader in = null;
    		String result = "";
    		try
    		{
    			URL realUrl = new URL(url);
    			// 打开和URL之间的连接
    			HttpURLConnection conn = (HttpURLConnection) realUrl
    					.openConnection();
    			// 设置通用的请求属性
    			conn.setRequestProperty("accept", "*/*");
    			conn.setRequestProperty("connection", "Keep-Alive");
    			conn.setRequestMethod("POST");
    			conn.setRequestProperty("Content-Type",
    					"application/x-www-form-urlencoded");
    			conn.setRequestProperty("charset", "utf-8");
    			conn.setUseCaches(false);
    			// 发送POST请求必须设置如下两行
    			conn.setDoOutput(true);
    			conn.setDoInput(true);
    			conn.setReadTimeout(TIMEOUT_IN_MILLIONS);
    			conn.setConnectTimeout(TIMEOUT_IN_MILLIONS);
    
    			if (param != null && !param.trim().equals(""))
    			{
    				// 获取URLConnection对象对应的输出流
    				out = new PrintWriter(conn.getOutputStream());
    				// 发送请求参数
    				out.print(param);
    				// flush输出流的缓冲
    				out.flush();
    			}
    			// 定义BufferedReader输入流来读取URL的响应
    			in = new BufferedReader(
    					new InputStreamReader(conn.getInputStream()));
    			String line;
    			while ((line = in.readLine()) != null)
    			{
    				result += line;
    			}
    		} catch (Exception e)
    		{
    			e.printStackTrace();
    		}
    		// 使用finally块来关闭输出流、输入流
    		finally
    		{
    			try
    			{
    				if (out != null)
    				{
    					out.close();
    				}
    				if (in != null)
    				{
    					in.close();
    				}
    			} catch (IOException ex)
    			{
    				ex.printStackTrace();
    			}
    		}
    		return result;
    	}
    }
    

    如果大家在使用过程中出现什么错误,或者有更好的建议,欢迎大家留言提出~~可以不断的改进这些类~

    源码点击下载

    路漫漫其修远兮 吾将上下而求索
  • 相关阅读:
    124. Binary Tree Maximum Path Sum
    99. Recover Binary Search Tree
    255. Verify Preorder Sequence in Binary Search Tree
    [LeetCode] 79. Word Search Java
    [LeetCode] 78. Subsets Java
    [LeetCode] 77. Combinations Java
    [LeetCode] 52. N-Queens II Java
    [LeetCode] 51. N-Queens Java
    [LeetCode] 47. Permutations II Java
    [LeetCode] 46. Permutations Java
  • 原文地址:https://www.cnblogs.com/hudabing/p/4125509.html
Copyright © 2020-2023  润新知