安卓开发中常用的十个工具类
来源:互联网 发布:鹏业软件股份有限公司 编辑:程序博客网 时间:2024/06/14 10:17
一、网络请求工具类: 最重要的是对http协议的理解,HttpUrlConnection
package com.example.tuhuadmin.fanxinglei.utils;import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.PrintWriter;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;import java.net.URLConnection;/** * Created on 2016/8/15. * Author:crs * Description:网络请求工具类 */public class HttpUtils { //设置网络连接超时时间 public static final int TIMEOUT_IN_MILLIONS = 5000; //设置请求结果回调 public interface CallBack { void onRequestComplete(String result); } /** * 异步get请求 * * @param urlStr * @param callBack 以接口对象为参数,特别好用 */ public static void doGetAsy(final String urlStr, final CallBack callBack) { new Thread(new Runnable() { @Override public void run() { String result = doGet(urlStr); if (callBack != null) { callBack.onRequestComplete(result); } } }).start(); } /** * 异步post请求 * * @param urlStr * @param params * @param callBack */ public static void doPostAsy(final String urlStr, final String params, final CallBack callBack) { new Thread(new Runnable() { @Override public void run() { String result = doPost(urlStr, params); if (callBack != null) { callBack.onRequestComplete(result); } } }).start(); } /** * 向指定url发送post方式的请求 * * @param urlStr * @param params * @return */ private static String doPost(String urlStr, String params) { URL url; String result = ""; BufferedReader bufferedReader = null; PrintWriter printWriter = null; try { url = new URL(urlStr); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("POST"); conn.setConnectTimeout(TIMEOUT_IN_MILLIONS); conn.setReadTimeout(TIMEOUT_IN_MILLIONS); //设置一系列的请求属性,让服务器端知道(我发送了什么类型的数据) conn.setRequestProperty("accept", "*/*"); conn.setRequestProperty("connection", "keep-Alive"); conn.setRequestProperty("charset", "utf-8"); conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); //发送POST请求必须设置如下两行 conn.setDoInput(true); conn.setDoOutput(true); //对请求参数的处理 if (params != null && !params.trim().equals("")) { //获取URLConnection对象对应的输出流 OutputStream os = conn.getOutputStream(); printWriter = new PrintWriter(os); // 发送请求参数 printWriter.print(params); printWriter.flush(); } //定义BufferedReader输入流来读取URL的响应 InputStream is = conn.getInputStream(); InputStreamReader inputStreamReader = new InputStreamReader(is); //主要是为了每次读取一行 bufferedReader = new BufferedReader(inputStreamReader); String line; while ((line = bufferedReader.readLine()) != null) { result += line; } } catch (Exception e) { e.printStackTrace(); //使用finally块来关闭输出流、输入流 } finally { try { if (bufferedReader != null) { bufferedReader.close(); } if (printWriter != null) { printWriter.close(); } } catch (IOException ex) { ex.printStackTrace(); } } return result; } /** * get请求 * * @param urlStr * @return */ private 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.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[] bytes = new byte[1024]; while ((len = is.read(bytes)) != -1) { baos.write(bytes, 0, len); } baos.flush(); //返回字符串 return baos.toString(); } } catch (Exception e) { e.printStackTrace(); } finally { //处理管理流的逻辑 if (is != null) { try { is.close(); } catch (IOException e) { e.printStackTrace(); } } if (baos != null) { try { baos.close(); } catch (IOException e) { e.printStackTrace(); } } conn.disconnect(); } return null; }}二、网络工具类: 是否有网络连接,是否是wifi连接,打开网络设置界面 ConnectivityManager
package com.example.tuhuadmin.fanxinglei.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;/** * Created on 2016/8/15. * Author:crs * Description:网络工具类 */public class NetUtils { /** * 判断网络是否连接 * * @param context * @return */ public static boolean isConnected(Context context) { ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); if (cm != null) { NetworkInfo activeNetworkInfo = cm.getActiveNetworkInfo(); if (activeNetworkInfo != null && activeNetworkInfo.isConnected()) { if (activeNetworkInfo.getState() == NetworkInfo.State.CONNECTED) { return true; } } } return false; } /** * 判断是不是WiFi连接 * * @param context * @return */ public static boolean isWifi(Context context) { ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); if (cm != null) { return cm.getActiveNetworkInfo().getType() == ConnectivityManager.TYPE_WIFI; } return false; } /** * 打开网络设置界面 * * @param activity */ 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); }}
三、软键盘工具类,打开或者关闭软键盘 InputMethodManager
package com.example.tuhuadmin.fanxinglei.utils;import android.content.Context;import android.view.inputmethod.InputMethodManager;import android.widget.EditText;/** * Created on 2016/8/15. * Author:crs * Description:软键盘工具类,需要事件触发 */public class KeyBoardUtils { /** * 打开软键盘 * * @param editText * @param context */ public static void openKeybord(EditText editText, Context context) { InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); imm.showSoftInput(editText, InputMethodManager.RESULT_SHOWN); imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY); } /** * 关闭软键盘 * @param editText * @param context */ public static void closeKeybord(EditText editText, Context context) { InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(editText.getWindowToken(), 0); }}四、app相关工具类 PackageManager 获取应用名称,获取应用的版本名称
package com.example.tuhuadmin.fanxinglei.utils;import android.content.Context;import android.content.pm.ApplicationInfo;import android.content.pm.PackageInfo;import android.content.pm.PackageManager;/** * Created on 2016/8/15. * Author:crs * Description:app工具类 */public class AppUtils { //获取应用程序名称 public static String getAppName(Context context) { try { PackageManager pm = context.getPackageManager(); PackageInfo packageInfo = pm.getPackageInfo(context.getPackageName(), 0); ApplicationInfo applicationInfo = packageInfo.applicationInfo; //这种方式是可以的 //String name = applicationInfo.loadLabel(pm).toString(); int labelRes = applicationInfo.labelRes; String name = context.getResources().getString(labelRes); return name; } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } return ""; } //获取应用程序版本名称 public static String getVersionName(Context context) { try { PackageManager packageManager = context.getPackageManager(); PackageInfo packageInfo = packageManager.getPackageInfo(context.getPackageName(), 0); String versionName = packageInfo.versionName; return versionName; } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } return ""; }}
五、屏幕工具类 WindowManager、Display
package com.example.tuhuadmin.fanxinglei.utils;import android.app.Activity;import android.app.ActivityManager;import android.content.Context;import android.content.IntentFilter;import android.content.pm.ApplicationInfo;import android.content.pm.PackageInfo;import android.content.pm.PackageManager;import android.content.res.Resources;import android.graphics.Bitmap;import android.net.ConnectivityManager;import android.net.NetworkInfo;import android.os.Build;import android.os.Environment;import android.telephony.TelephonyManager;import android.util.DisplayMetrics;import android.view.Display;import android.view.View;import android.view.Window;import android.view.WindowManager;/** * Created on 2016/8/1. * Author:crs * Description:屏幕工具类 */public class ScreenUtils { //获取屏幕的宽度 public static int getScreenWidth(Context context) { WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); Display defaultDisplay = wm.getDefaultDisplay(); int width = defaultDisplay.getWidth(); return width; } //获取屏幕的高度 public static int getScreenHeight(Context context) { WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); Display defaultDisplay = wm.getDefaultDisplay(); int height = defaultDisplay.getHeight(); return height; } //获取状态栏的高度 public static int getStatusHeight(Context context) { int statusHeight = -1; //使用反射,可能会出现类找不到的异常ClassNotFoundException try { Class<?> clazz = Class.forName("com.android.internal.R$dimen"); Object object = clazz.newInstance(); String status_bar_height = clazz.getField("status_bar_height").get(object).toString(); int height = Integer.parseInt(status_bar_height); //转化成px返回 statusHeight = context.getResources().getDimensionPixelSize(height); } catch (Exception e) { e.printStackTrace(); } return statusHeight; } //获取当前屏幕截图,包括状态栏 public static Bitmap getSnapshot(Activity activity) { Window window = activity.getWindow(); View view = window.getDecorView(); view.setDrawingCacheEnabled(true); view.buildDrawingCache(); Bitmap bitmap = view.getDrawingCache(); int screenWidth = getScreenWidth(activity); int screenHeight = getScreenHeight(activity); Bitmap bp; bp = Bitmap.createBitmap(bitmap, 0, 0, screenWidth, screenHeight); view.destroyDrawingCache(); return bp; }}
六、SD卡工具类, Environment类
package com.example.tuhuadmin.fanxinglei.utils;import android.os.Environment;import android.os.StatFs;import java.io.File;/** * Created on 2016/8/15. * Author:crs * Description:sd卡工具类 */public class SDCardUtils { //判断sd卡是否可用 public static boolean isSDCardEnable() { return Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED); } //获取sd卡路径 public static String getSDCardPath() { File file = Environment.getExternalStorageDirectory(); String path = file.getAbsolutePath() + File.separator; return path; } //获取系统存储路径 public static String getRootDirectoryPath() { File rootDirectory = Environment.getRootDirectory(); String path = rootDirectory.getAbsolutePath(); return path; } //获取sd卡的剩余存储空间 单位byte public static long getSDCardAllSize() { StatFs statFs = new StatFs(getSDCardPath()); //获取空闲的数据块的数量 long availableBlocksLong = statFs.getAvailableBlocks(); //获取单个数据块的大小 long blockSize = statFs.getBlockSize(); return availableBlocksLong * blockSize; }}七、单位转化工具类DisplayMetrics
package com.example.tuhuadmin.fanxinglei.utils;import android.content.Context;import android.content.res.Resources;import android.util.DisplayMetrics;/** * Created on 2016/8/14. * Author:crs * Description:XXX */public class DensityUtils { public static int sp2px(Context context, int i) { Resources resources = context.getResources(); DisplayMetrics displayMetrics = resources.getDisplayMetrics(); float fontScale = displayMetrics.scaledDensity; return (int) (i * fontScale + 0.5f); } //dp转化成px 其他的模仿就行了 因为1dp=1sp的 public static int dp2px(Context context, float dpValue) { Resources resources = context.getResources(); //用于存储显示的通用信息,如显示大小,分辨率和字体。 DisplayMetrics displayMetrics = resources.getDisplayMetrics(); //获取转化新系数(这里不太懂 要好好搞一下) float scale = displayMetrics.density; //在160dpi里面 return (int) (dpValue * scale + 0.5f); } public static int px2dp(Context context, float pxValue) { Resources resources = context.getResources(); //用于存储显示的通用信息,如显示大小,分辨率和字体。 DisplayMetrics displayMetrics = resources.getDisplayMetrics(); //获取转化新系数(这里不太懂 要好好搞一下) float scale = displayMetrics.density; //在160dpi里面 return (int) (pxValue / scale + 0.5f); }}八,首选项工具类
package com.example.tuhuadmin.fanxinglei.utils;import android.content.Context;import android.content.SharedPreferences;/** * Created on 2016/8/2. * Author:crs * Description:首选项工具类 */public class SPUtils { //存储数据需要editor对象,取数据直接首选项对象就好了。 private static final String SHARE_PREFER_NAME = "config"; private static SharedPreferences mSharedPreferences; public static void putBoolean(Context context, String key, boolean value) { if (mSharedPreferences == null) { //私有模式 mSharedPreferences = context.getSharedPreferences(SHARE_PREFER_NAME, Context.MODE_PRIVATE); } SharedPreferences.Editor editor = mSharedPreferences.edit(); editor.putBoolean(key, value); editor.commit(); } public static boolean getBoolean(Context context, String key, boolean defaultValue) { if (mSharedPreferences == null) { mSharedPreferences = context.getSharedPreferences(SHARE_PREFER_NAME, Context.MODE_PRIVATE); } //如果获取不到就显示默认值 return mSharedPreferences.getBoolean(key, defaultValue); } public static void putString(Context context, String key, String value) { if (mSharedPreferences == null) { mSharedPreferences = context.getSharedPreferences(SHARE_PREFER_NAME, Context.MODE_PRIVATE); } SharedPreferences.Editor edit = mSharedPreferences.edit(); edit.putString(key, value); edit.commit(); } public static String getString(Context context, String key, String defaultValue) { if (mSharedPreferences == null) { mSharedPreferences = context.getSharedPreferences(SHARE_PREFER_NAME, Context.MODE_PRIVATE); } //如果获取不到就显示默认值 return mSharedPreferences.getString(key, defaultValue); }}九、log工具类
package com.example.tuhuadmin.fanxinglei.utils;import android.util.Log;/** * Created on 2016/8/1. * Author:crs * Description:XXX */public class LogUtils { public static boolean isDebug = true; public static void e(String tag, String msg) { if (isDebug) { Log.i(tag, msg); } } public static void w(String tag, String msg) { if (isDebug) { Log.i(tag, msg); } } public static void v(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 i(String tag, String msg) { if (isDebug) { Log.i(tag, msg); } }}
十、Toast工具类
package com.example.tuhuadmin.fanxinglei.utils;import android.content.Context;import android.widget.Toast;/** * Created on 2016/8/1. * Author:crs * Description:XXX */public class ToastUtils { public static void showLong(Context context, String msg) { Toast.makeText(context, msg, Toast.LENGTH_LONG).show(); } public static void showShort(Context context, String msg) { Toast.makeText(context, msg, Toast.LENGTH_SHORT); }}
0 0
- 安卓开发中常用的十个工具类
- 安卓开发中常用的10个工具类
- 安卓开发常用的工具类
- Log安卓开发中常用的优秀日志工具
- Log安卓开发中常用的优秀日志工具
- 安卓实用常用的开发工具
- 安卓开发常用到的工具类
- Lodash中十个常用的工具函数
- Lodash中十个常用的工具函数
- 安卓常用的工具类分享~~~~
- 安卓开发-工具类的使用
- 安卓开发中常用的开发框架
- Android开发中常用的工具类
- Android开发中常用的工具类
- Android开发中常用的工具类
- Android开发中常用的工具类
- Android开发中常用的工具类
- Android开发中常用的工具类
- 4.1.2 有效矩形和无效矩形
- Regex - 国内 车牌号
- LR模型常见问题小议
- could not build module foundation错误解决方案
- MFC中Listbox控件的简单使用
- 安卓开发中常用的十个工具类
- Periodic Strings
- img src
- Creo二次开发:批量生成工程图
- 4.2.1 设备环境
- Spring中Quartz调度器的使用
- 原子性和volatile
- OpenSceneGraph实现的NeHe OpenGL教程 - 第十六课
- Opencv学习之图像边缘检测