Android开发10个常用工具类_第1页
Android开发10个常用工具类_第2页
Android开发10个常用工具类_第3页
Android开发10个常用工具类_第4页
Android开发10个常用工具类_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Android开发10个常用工具类L日志工具类Ljavapackagecom.zhy.utils;importandroid.util.Log;***Log统一管理类*/publicclassLprivateL()/*cannotbeinstantiated*/thrownewUnsupportedOperationException("cannotbeinstantiated");*保存在手机里面的文件名publicstaticfinalStringFILE_NAME="share_data";/***保存数据的方法,我们需要拿到保存数据的具体类型,然后根据类型调用不同的保存方法*@paramcontext@paramkey@paramobject*/publicstaticvoidput(Contextcontext.Stringkey.Objectobject){SharedPreferencessp=context.getSharedPreferences(FILE_NAMEJContext.MODE_PRIVATE);SharedPreferences.Editoreditor=sp.edit();if(objectinstanceofString)editor.putString(key,,(String)object);}elseif(objectinstanceofInteger)editor.putInt(key(Integer)object);}elseif(objectinstanceofBoolean)editor.putBoolean(keyJ(Boolean)object);}elseif(objectinstanceofFloat)editor.putFloat(key(Float)object);}elseif(objectinstanceofLong)editor.putLong(key(Long)object);}elseeditor.putString(key,object.toString());)SharedPreferencesCompat.apply(editor);*得到保存数据的方法,我们根据默认值得到保存的数据的具体类型,然后调用相对于的方法获取值*@paramcontext*@paramkey*@paramdefaultobject*@returnpublicstaticObjectget(ContextcontextStringkey.Objectdefaultobject)SharedPreferencessp=context.getSharedPreferences(FILE_NAME^Context.MODE_PRIVATE);if(defaultobjectinstanceofString)returnsp.getString(key^(String)defaultobject);}elseif(defaultobjectinstanceofInteger)returnsp.get工nt(key,(Integer)defaultobject);}elseif(defaultobjectinstanceofBoolean)returnsp.getBoolean(key(Boolean)defaultobject);}elseif(defaultobjectinstanceofFloat){returnsp.getFloat(key,(Float)defaultobject);}elseif(defaultobjectinstanceofLong){returnsp.getLong(key,(Long)defaultobject);)returnnull;)/***移除某个key值已经对应的值@paramcontext@paramkey*/publicstaticvoidremove(Contextcontext.Stringkey){SharedPreferencessp=context.getSharedPreferences(FILE_NAMEJContext.MODE_PRIVATE);SharedPreferences.Editoreditor=sp.edit();editor,remove(key);SharedPreferencesCompat.apply(editor);}/**查询某个key是否已经存在*@paramcontext*@paramkey*清除所有数据*@paramcontext*/publicstaticvoidclear(Contextcontext){SharedPreferencessp=context•getSharedPreferences(FILE_NAME_>Context.MODE_PRIVATE);SharedPreferences.Editoreditor=sp.edit();editor.clear();SharedPreferencesCompat.apply(editor);)*@returnpublicstaticbooleancontains(ContextcontextStringkey){SharedPreferencessp=context.getSharedPreferences(FILE_NAMEJContext.MODE_PRIVATE);returnsp.contains(key);)/***返回所有的键值对*@paramcontext@return*/publicstaticMap<String,?>getAll(Contextcontext){SharedPreferencessp=context.getSharedPreferences(FILE_NAME?Context.MODE_PRIVATE);returnsp.getAll();*创建一个解决SharedPreferencesCompat.apply方法的一个兼容类**©authorzhy**/privatestaticclassSharedPreferencesCompatprivatestaticfinalMethodsApplyMethod=findApplyMethod();***反射查找apply的方法**@return*/@SuppressWarnings({"unchecked1^"rawtypes”))privatestaticMethodfindApplyMethod()tryClassclz=SharedPreferences.Editor.class;returnclz.getMethod("apply");}catch(NoSuchMethodExceptione)returnnull;***如果找到则使用apply执行,否则使用commit*@parameditorpublicstaticvoidapply(SharedPreferences.Editoreditor)tryif(sApplyMethod!=null)sApplyMethod.invoke(editor);return;}catch(IllegalArgumentExceptione)}catch(IllegalAccessExceptione){}catch(InvocationTargetExceptione){)mit();})}对SharedPreference的使用做了建议的封装,对夕公布出put,get,remove,clear等等方法;注意一点,里面所有的commit操作使用了SharedPreferencesCompat.apply进行了替代,目的是尽可能的使用叩ply代替commit首先说下为什么,因为commit方法是同步的,并且我们很多时候的commit操作都是UI线程中,毕竟是10操作,尽可能异步;所以我们使用apply进行替代,apply异步的进行写入;但是apply相当于commit来说是newAPI呢,为了更好的兼容,我们做了适配;SharedPreferencesCompat也可以给大家创建兼容类提供了一定的参考〜〜4、单位转换类Densitylltilspackagecom.zhy.utils;importandroid.content.Context;importandroid.util.TypedValue;/***常用单位转换的辅助类****/PublicclassDensityUtilsprivateDensityUtils()publicstaticbooleanisDebug=true;//是否需要打印bug,可以在application的onCreate函数里面初始化privatestaticfinalStringTAG="way";//下面四个是默认tag的函数publicstaticvoidi(Stringmsg){if(isDebug)Log.i(TAGmsg);)publicstaticvoidd(Stringmsg){if(isDebug)Log.d(TAG,msg);}publicstaticvoide(Stringmsg)if(isDebug)**cannotbeinstantiated**thrownewUnsupportedOperationException("cannotbeinstantiated");dp转px*@paramcontext@paramval@return*/publicstaticintdp2px(Contextcontext,floatdpVal){return(int)TypedValue.叩plyDimension(TypedValue.COMPLEX_UN工T_D工P,dpVal,context.getResources().getDisplayMetrics());}/***sp转px呵b9L9山cou本ex本呵b9L9山八9丁呵在本nLu\bnp丁罩c2本9本罩c罩u本2bsbx(Cou本ex本cou本ex本、+丁o9本2b八9T)杨Le$nLu(罩u本)I入beq八9丁ne.9bb丁人D罩山eu2罩ou(l入beq八9丁ne.COWb[EX-n/II-2b.2b八9丁、cou$ex$:.8e$be2onLce2Q.8e本D罩2b丁9入We本L^c2。)?}bx转qb**呵b9L9山cou本ex本*呵设3山bxA9丁*呵Le本nLu*\bnp丁罩c2本9本罩c+丁。9本bxsqb(Cou本ex本cou本ex本、+丁。9本bx八9丁)finalfloatscale=context.getResources().getDisplayMetrics().density;return(pxVal/scale);)/***px转sp*@paramfontscale@parampxVal@return*/publicstaticfloatpx2sp(ContextcontextfloatpxVal){return(pxVal/context.getResources().getDisplayMetrics().scaledDensity);))5、SD卡相关辅助类SDCardUtilspackagecom.zhy.utils;importjava.io.File;importandroid.os.Environment;importandroid.os.StatFs;***SD卡相关的辅助类*/publicclassSDCardUtilsprivateSDCardlltils()**cannotbeinstantiated**/thrownewUnsupportedOperationException("cannotbeinstantiated");***判断SDCard是否可用*@return*/publicstaticbooleanisSDCardEnable()returnEnvironment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED);***获取SD卡路径*@return*/publicstaticStringgetSDCardPath()returnEnvironment.getExternalStorageDirectory().getAbsolutePath()+File.separator;*获取SD卡的剩余容量单位byte**©return*/publicstaticlonggetSDCardAHSize(){if(isSDCardEnable()){StatFsstat=newStatFs(getSDCardPath());//获取空闲的数据块的数量longavailableBlocks=(long)stat.getAvailableBlocks()-4;//获取单个数据块的大小(byte)longfreeBlocks=stat.getAvailableBlocks();returnfreeBlocks*availableBlocks;)return0;)/***获取指定路径所在空间的剩余可用容量字节数,单位byte@paramfilePath@return容量字节SDCard可用空间,内部存储可用空间*/publicstaticlonggetFreeBytes(StringfilePath){//如果是Sd卡的下的路径,则获取sd卡可用容量if(filePath.startsWith(getSDCardPath())){filePath=getSDCardPath();}else{//如果是内部存储的路径,则获取内存存储的可用容量filePath=Environment.getDataDirectory().getAbsolutePath();}StatFsstat=newStatFs(filePath);longavailableBlocks=(long)stat.getAvailableBlocks()-4;returnstat.getBlockSize()*availableBlocks;)/***获取系统存储路径@return/publicstaticStringgetRootDirectoryPath(){returnEnvironment.getRootDirectory().getAbsolutePath();)}6、屏幕相关辅助类ScreenUtilspackagecom.zhy.utils;importandroid.app.Activity;importandroid.content.Context;importandroid.graphics.Bitmap;importandroid.graphics.Rect;importandroid.util.DisplayMetrics;importandroid.view.View;importandroid.view.WindowManager;获得屏幕相关的辅助类***/publicclassScreenUtils{privateScreenUtils(){/**cannotbeinstantiated**/thrownewUnsupportedOperationException("cannotbeinstantiated");}/***获得屏幕高度**@paramcontext*@return*/publicstaticintgetScreenWidth(Contextcontext)WindowManagerwm=(WindowManager)context.getSystemService(Context.WINDOW_SERVICE);DisplayMetricsoutMetrics=newDisplayMetrics();wm.getDefaultDisplayO.getMetrics(outMetrics);returnoutMetrics.widthPixels;)*获得屏幕宽度*@paramcontext@return/publicstaticintgetScreenHeight(Contextcontext)WindowManagerwm=(WindowManager)context.getSystemService(Context.WINDOW_SERVICE);DisplayMetricsoutMetrics=newDisplayMetrics();Log.e(TAG,msg);}publicstaticvoidv(Stringmsg){if(isDebug)Log.v(TAG,msg);}//下面是传入自定义tag的函数publicstaticvoidi(Stringtag.Stringmsg){if(isDebug)Log.i(tag,msg);)publicstaticvoidd(Stringtag.Stringmsg){if(isDebug)Log.i(tag,msg);wm.getDefaultDisplay().getMetrics(outNletrics);returnoutMetrics.heightpixels;)***获得状态栏的高度*@paramcontext*@returnpublicstaticintgetStatusHeight(Contextcontext)intstatusHeight=-1;tryClass<?>clazz=Class.forName("ernal.R$dimen");Objectobject=clazz.newlnstance();intheight=Integer.parselnt(clazz.getField("status_bar_height").get(object).toString());statusHeight=context.getResources().getDimensionPixelSize(height);}catch(Exceptione){e.printStackTrace();)returnstatusHeight;}/***获取当前屏幕截图,包含状态栏*@paramactivity@return*/publicstaticBitmapsnapShotWithStatusBar(Activityactivity){Viewview=activity,getWindow().getDecorView();view.setDrawingCacheEnabled(true);view.buildDrawingCache();Bitmapbmp=view.getDrawingCache();intwidth=getScreenWidth(activity);intheight=getScreenHeight(activity);Bitmapbp=null;bp=Bitmap.createBitmap(bmp0,0,width,height);view.destroyDrawingCache();returnbp;***获取当前屏幕截图,不包含状态栏*@paramactivity@return*/publicstaticBitmapsnapShotWithoutStatusBar(Activityactivity)Viewview=activity.getWindow().getDecorView();view.setDrawingCacheEnabled(true);view.buildDrawingCache();Bitmapbmp=view.getDrawingCache();Rectframe=newRect();activity.getWindow().getDecorView().getWindowVisibleDisplayFname(frame)intstatusBarHeight=frame.top;intwidth=getScreenWidth(activity);intheight=getScreenHeight(activity);Bitmapbp=null;bp=Bitmap.createBitmap(bmp0,statusBarHeight^width,height-statusBarHeight);view.destroyDrawingCache();returnbp;)7、App相关辅助类packagecom.zhy.utils;importandroid.content.Context;importandroid.content.pm.Packageinfo;importandroid.content.pm.PackageManager;importandroid・content・pm.PackageManager.NameNotFoundException;***跟App相关的辅助类*/publicclassAppUtilsprivateAppUtils()/"cannotbeinstantiated**/thrownewUnsupportedOperationException("cannotbeinstantiated");*获取应用程序名称*/publicstaticStringgetAppName(Contextcontext){try{PackageManagerpackageManager=context.getPackageManager();Packageinfopackageinfo=packageManager.getPackageinfo(context.getPackageName(),0);intlabelRes=packageinfo.applicationinfo.labelRes;returncontext.getResources().getString(labelRes);}catch(NameNotFoundExceptione){e.printStackTrace();)returnnull;)***[获取应用程序版本名称信息]@paramcontext@return当前应用的版本名称*/publicstaticStringgetVersionName(Contextcontext){try{PackageManagerpackageManager=context.getPackageManager();Packageinfopackageinfo=packageManager.getPackageinfo(context.getPackageName(),0);returnpackageinfo.versionName;}catch(NameNotFoundExceptione)

{e.printStackTrace();}returnnull;8、软键盘相关辅助类KeyBoardUtilspackagecom.zhy.utils;importandroid.content.Context;importandroid.view.inputmethod.InputMethodManager;importandroid.widget.EditText;/***打开或关闭软键盘**@authorzhy**/publicclassKeyBoardUtils{/***打卡软键盘@parammEditText输入框@parammContext上下文/publicstaticvoidopenKeybord(EditTextmEditText^ContextmContext){InputMethodManagerimm=(InputMethodManager)mContext.getSystemService(Context.INPUT_METHOD_SERVICE);imm.showSoftInput(mEditTextInputMethodManager.RESULT_SHOWN);imm.toggleSoftInput(InputMethodManager.SHOW_FORCEDJInputMethodManager.HIDE_IMPLICIT_ONLY);}/**关闭软键盘*@parammEditText输入框*@parammContext上下文*/publicstaticvoidcloseKeybord(EditTextmEditTextContextmContext)InputMethodManagerimm=(InputMethodManager)mContext.getSystemService(Context.INPUT_METHOD_SERVICE);imm.hideSoftInputFromlAlindow(mEditText.getWindowToken(),0);}}9、网络相关辅助类NetUtilspackagecom.zhy.utils;importandroid.app.Activity;importandroid.content.ComponentName;importandroid.content.Context;importandroid.content.Intent;import.ConnectivityManager;import.Networkinfo;publicstaticvoide(Stringtag.Stringmsg){if(isDebug)Log.i(tag,msg);)publicstaticvoidv(Stringtag.Stringmsg){if(isDebug)Log.i(tag,msg);})网上看到的类,注释上应该原创作者的名字,很简单的一个类;网上也有很多提供把日志记录到SDCard上的,不过我是从来没记录过,所以引入个最简单的,大家可以进行评价是否需要扩充〜〜2、Toast统一管理类packagecom.zhy.utils;importandroid.content.Context;importandroid.widget.Toast;*跟网络相关的工具类****/publicclassNetUtils{privateNetUtils(){/**cannotbeinstantiated**/thrownewUnsupportedOperationException("cannotbeinstantiated");}/***判断网络是否连接**@paramcontext*@returncontext*/publicstaticbooleanisConnected(Contextcontext)ConnectivityManagerconnectivity=(ConnectivityManager).getSystemService(Context.CONNECTIVITY_SERVICE);if(null!=connectivity)Networkinfoinfo=connectivity.getActiveNetworkInfo();if(null!=info&&info.isConnected())if(info.getState()==Networkinfo.State.CONNECTED)returntrue;)})returnfalse;/**判断是否是Wifi连接/publicstaticbooleanisWifi(Contextcontext){ConnectivityManagercm=(ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);if(cm==null)returnfalse;returncm.getActiveNetworkInfo().getType()==ConnectivityManager.TYPE_WIFI;}/**打开网络设置界面/publicstaticvoidopenSetting(Activityactivity)Intentintent=newIntent("/");ComponentNamecm=newComponentName("com.android.settings"com.android.settings.WirelessSettings");intent.setcomponent(cm);intent.setAction("ent.action.VIEW");activity.startActivityForResult(intent^0);)}10、Http相关辅助类HttpUtilspackagecom.zhy.utils;importjava.io.BufferedReader;importjava.io.ByteArrayOutputStream;importjava.io.lOException;importjava.io.InputStream;importjava・io.InputStreamReader;importjava.io.Printwriter;import.HttpURLConnection;import.URL;*Http请求的工具类*@authorzhy*/5000;5000;privatestaticfinalintTIMEOUT_IN_MILLIONSpublicinterfaceCallBackvoidonRequestComplete(Stringresult);/***异步的Get请求*@paramurlStr*@paramcallback*/publicstaticvoiddoGetAsyn(finalStringurlStr,finalCallBackcallBack){newThread(){publicvoidrun(){try{Stringresult=doGet(urlStr);if(callBack!=null){callBack.onRequestComplete(result);}}catch(Exceptione)e.printStackTrace();};}.start();}/***异步的Post请求@paramurlStr@paramparams@paramcallBack©throwsException*/params.publicstaticvoiddoPostAsyn(finalStringurlStr^finalStringparams.finalCallBackcallBack)throwsException{newThread(){publicvoidrun()try};/**Stringresult=doPost(urlStr^params);if(callback!=null)callBack.onRequestComplete(result);}catch(Exceptione)e.printStackTrace();Get请求,获得返回数据@paramurlStr*©return*©throwsExceptionpublicstaticStringdoGet(StringurlStr)URLurl=null;HttpURLConnectionconn=null;Inputstreamis=null;ByteArrayOutputStreambaos=null;try{url=newURL(urlStr);conn=(HttpURLConnection)url.openConnection();conn.setReadTimeout(TIMEOUT_IN_MILLIONS);conn.setConnectTimeout(TINIEOUT_IN_MILLIONS);conn.setRequestMethod("GET");conn.setRequestProperty("accept""*/*");conn・setRequestProperty("connection"Keep-Alive");if(conn.getResponseCode()==200){is=conn.getlnputstream();baos=newByteArrayOutputStream();intlen=-1;byte[]buf=newbyte[128];while((len=is.read(buf))!=-1){baos.write(buf,0,len);}baos.flush();returnbaos.toString();}else{thrownewRuntimeException("responseCodeisnot200}}catch(Exceptione){e.printStackTrace();}finallytry***Toast统一管理类*/publicclassTprivateT()**cannotbeinstantiated@paramcontext@parammessage*/@paramcontext@parammessage*/thrownewUnsupportedOperationException("cannotbeinstantiated");publicstaticbooleanisShow=true;/**短时间显示Toastif(is!=null)is.close();}catch(lOExceptione){}try{if(baos!=null)baos.close();}catch(lOExceptione){)conn・disconnect();)returnnull;)/***向指定URL发送POST方法的请求*@paramurl发送请求的URL@paramparam请求参数,请求参数应该是namel=valuel&name2=value2的形式。@return所代表远程资源的响应结果©throwsException*/publicstaticStringdoPost(Stringurl.Stringparam){PrintWriterout=null;BufferedReaderin=null;Stringresult="try{URLrealUrl=newURL(url);//打开和URL之间的连接HttpURLConnectionconn=(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=newPrintwriter(conn.getOutputStream());//发送请求参数out.print(para

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论