版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
Android開發(fā)10個(gè)常用工具類L日志工具類Ljavapackagecom.zhy.utils;importandroid.util.Log;***Log統(tǒng)一管理類*/publicclassLprivateL()/*cannotbeinstantiated*/thrownewUnsupportedOperationException("cannotbeinstantiated");*保存在手機(jī)里面的文件名publicstaticfinalStringFILE_NAME="share_data";/***保存數(shù)據(jù)的方法,我們需要拿到保存數(shù)據(jù)的具體類型,然后根據(jù)類型調(diào)用不同的保存方法*@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);*得到保存數(shù)據(jù)的方法,我們根據(jù)默認(rèn)值得到保存的數(shù)據(jù)的具體類型,然后調(diào)用相對(duì)于的方法獲取值*@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;)/***移除某個(gè)key值已經(jīng)對(duì)應(yīng)的值@paramcontext@paramkey*/publicstaticvoidremove(Contextcontext.Stringkey){SharedPreferencessp=context.getSharedPreferences(FILE_NAMEJContext.MODE_PRIVATE);SharedPreferences.Editoreditor=sp.edit();editor,remove(key);SharedPreferencesCompat.apply(editor);}/**查詢某個(gè)key是否已經(jīng)存在*@paramcontext*@paramkey*清除所有數(shù)據(jù)*@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);)/***返回所有的鍵值對(duì)*@paramcontext@return*/publicstaticMap<String,?>getAll(Contextcontext){SharedPreferencessp=context.getSharedPreferences(FILE_NAME?Context.MODE_PRIVATE);returnsp.getAll();*創(chuàng)建一個(gè)解決SharedPreferencesCompat.apply方法的一個(gè)兼容類**?authorzhy**/privatestaticclassSharedPreferencesCompatprivatestaticfinalMethodsApplyMethod=findApplyMethod();***反射查找apply的方法**@return*/@SuppressWarnings({"unchecked1^"rawtypes”))privatestaticMethodfindApplyMethod()tryClassclz=SharedPreferences.Editor.class;returnclz.getMethod("apply");}catch(NoSuchMethodExceptione)returnnull;***如果找到則使用apply執(zhí)行,否則使用commit*@parameditorpublicstaticvoidapply(SharedPreferences.Editoreditor)tryif(sApplyMethod!=null)sApplyMethod.invoke(editor);return;}catch(IllegalArgumentExceptione)}catch(IllegalAccessExceptione){}catch(InvocationTargetExceptione){)mit();})}對(duì)SharedPreference的使用做了建議的封裝,對(duì)夕公布出put,get,remove,clear等等方法;注意一點(diǎn),里面所有的commit操作使用了SharedPreferencesCompat.apply進(jìn)行了替代,目的是盡可能的使用叩ply代替commit首先說下為什么,因?yàn)閏ommit方法是同步的,并且我們很多時(shí)候的commit操作都是UI線程中,畢竟是10操作,盡可能異步;所以我們使用apply進(jìn)行替代,apply異步的進(jìn)行寫入;但是apply相當(dāng)于commit來說是newAPI呢,為了更好的兼容,我們做了適配;SharedPreferencesCompat也可以給大家創(chuàng)建兼容類提供了一定的參考??4、單位轉(zhuǎn)換類Densitylltilspackagecom.zhy.utils;importandroid.content.Context;importandroid.util.TypedValue;/***常用單位轉(zhuǎn)換的輔助類****/PublicclassDensityUtilsprivateDensityUtils()publicstaticbooleanisDebug=true;//是否需要打印bug,可以在application的onCreate函數(shù)里面初始化privatestaticfinalStringTAG="way";//下面四個(gè)是默認(rèn)tag的函數(shù)publicstaticvoidi(Stringmsg){if(isDebug)Log.i(TAGmsg);)publicstaticvoidd(Stringmsg){if(isDebug)Log.d(TAG,msg);}publicstaticvoide(Stringmsg)if(isDebug)**cannotbeinstantiated**thrownewUnsupportedOperationException("cannotbeinstantiated");dp轉(zhuǎn)px*@paramcontext@paramval@return*/publicstaticintdp2px(Contextcontext,floatdpVal){return(int)TypedValue.叩plyDimension(TypedValue.COMPLEX_UN工T_D工P,dpVal,context.getResources().getDisplayMetrics());}/***sp轉(zhuǎn)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轉(zhuǎn)qb**呵b9L9山cou本ex本*呵設(shè)3山bxA9丁*呵Le本nLu*\bnp丁罩c2本9本罩c+丁。9本bxsqb(Cou本ex本cou本ex本、+丁。9本bx八9?。ゝinalfloatscale=context.getResources().getDisplayMetrics().density;return(pxVal/scale);)/***px轉(zhuǎn)sp*@paramfontscale@parampxVal@return*/publicstaticfloatpx2sp(ContextcontextfloatpxVal){return(pxVal/context.getResources().getDisplayMetrics().scaledDensity);))5、SD卡相關(guān)輔助類SDCardUtilspackagecom.zhy.utils;importjava.io.File;importandroid.os.Environment;importandroid.os.StatFs;***SD卡相關(guān)的輔助類*/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());//獲取空閑的數(shù)據(jù)塊的數(shù)量longavailableBlocks=(long)stat.getAvailableBlocks()-4;//獲取單個(gè)數(shù)據(jù)塊的大小(byte)longfreeBlocks=stat.getAvailableBlocks();returnfreeBlocks*availableBlocks;)return0;)/***獲取指定路徑所在空間的剩余可用容量字節(jié)數(shù),單位byte@paramfilePath@return容量字節(jié)SDCard可用空間,內(nèi)部存儲(chǔ)可用空間*/publicstaticlonggetFreeBytes(StringfilePath){//如果是Sd卡的下的路徑,則獲取sd卡可用容量if(filePath.startsWith(getSDCardPath())){filePath=getSDCardPath();}else{//如果是內(nèi)部存儲(chǔ)的路徑,則獲取內(nèi)存存儲(chǔ)的可用容量filePath=Environment.getDataDirectory().getAbsolutePath();}StatFsstat=newStatFs(filePath);longavailableBlocks=(long)stat.getAvailableBlocks()-4;returnstat.getBlockSize()*availableBlocks;)/***獲取系統(tǒng)存儲(chǔ)路徑@return/publicstaticStringgetRootDirectoryPath(){returnEnvironment.getRootDirectory().getAbsolutePath();)}6、屏幕相關(guān)輔助類ScreenUtilspackagecom.zhy.utils;importandroid.app.Activity;importandroid.content.Context;importandroid.graphics.Bitmap;importandroid.graphics.Rect;importandroid.util.DisplayMetrics;importandroid.view.View;importandroid.view.WindowManager;獲得屏幕相關(guān)的輔助類***/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的函數(shù)publicstaticvoidi(Stringtag.Stringmsg){if(isDebug)Log.i(tag,msg);)publicstaticvoidd(Stringtag.Stringmsg){if(isDebug)Log.i(tag,msg);wm.getDefaultDisplay().getMetrics(outNletrics);returnoutMetrics.heightpixels;)***獲得狀態(tài)欄的高度*@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;}/***獲取當(dāng)前屏幕截圖,包含狀態(tài)欄*@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;***獲取當(dāng)前屏幕截圖,不包含狀態(tài)欄*@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相關(guān)輔助類packagecom.zhy.utils;importandroid.content.Context;importandroid.content.pm.Packageinfo;importandroid.content.pm.PackageManager;importandroid?content?pm.PackageManager.NameNotFoundException;***跟App相關(guān)的輔助類*/publicclassAppUtilsprivateAppUtils()/"cannotbeinstantiated**/thrownewUnsupportedOperationException("cannotbeinstantiated");*獲取應(yīng)用程序名稱*/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;)***[獲取應(yīng)用程序版本名稱信息]@paramcontext@return當(dāng)前應(yīng)用的版本名稱*/publicstaticStringgetVersionName(Contextcontext){try{PackageManagerpackageManager=context.getPackageManager();Packageinfopackageinfo=packageManager.getPackageinfo(context.getPackageName(),0);returnpackageinfo.versionName;}catch(NameNotFoundExceptione)
{e.printStackTrace();}returnnull;8、軟鍵盤相關(guān)輔助類KeyBoardUtilspackagecom.zhy.utils;importandroid.content.Context;importandroid.view.inputmethod.InputMethodManager;importandroid.widget.EditText;/***打開或關(guān)閉軟鍵盤**@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);}/**關(guān)閉軟鍵盤*@parammEditText輸入框*@parammContext上下文*/publicstaticvoidcloseKeybord(EditTextmEditTextContextmContext)InputMethodManagerimm=(InputMethodManager)mContext.getSystemService(Context.INPUT_METHOD_SERVICE);imm.hideSoftInputFromlAlindow(mEditText.getWindowToken(),0);}}9、網(wǎng)絡(luò)相關(guān)輔助類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);})網(wǎng)上看到的類,注釋上應(yīng)該原創(chuàng)作者的名字,很簡單的一個(gè)類;網(wǎng)上也有很多提供把日志記錄到SDCard上的,不過我是從來沒記錄過,所以引入個(gè)最簡單的,大家可以進(jìn)行評(píng)價(jià)是否需要擴(kuò)充??2、Toast統(tǒng)一管理類packagecom.zhy.utils;importandroid.content.Context;importandroid.widget.Toast;*跟網(wǎng)絡(luò)相關(guān)的工具類****/publicclassNetUtils{privateNetUtils(){/**cannotbeinstantiated**/thrownewUnsupportedOperationException("cannotbeinstantiated");}/***判斷網(wǎng)絡(luò)是否連接**@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;}/**打開網(wǎng)絡(luò)設(shè)置界面/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相關(guān)輔助類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請(qǐng)求的工具類*@authorzhy*/5000;5000;privatestaticfinalintTIMEOUT_IN_MILLIONSpublicinterfaceCallBackvoidonRequestComplete(Stringresult);/***異步的Get請(qǐng)求*@paramurlStr*@paramcallback*/publicstaticvoiddoGetAsyn(finalStringurlStr,finalCallBackcallBack){newThread(){publicvoidrun(){try{Stringresult=doGet(urlStr);if(callBack!=null){callBack.onRequestComplete(result);}}catch(Exceptione)e.printStackTrace();};}.start();}/***異步的Post請(qǐng)求@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請(qǐng)求,獲得返回?cái)?shù)據(jù)@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統(tǒng)一管理類*/publicclassTprivateT()**cannotbeinstantiated@paramcontext@parammessage*/@paramcontext@parammessage*/thrownewUnsupportedOperationException("cannotbeinstantiated");publicstaticbooleanisShow=true;/**短時(shí)間顯示Toastif(is!=null)is.close();}catch(lOExceptione){}try{if(baos!=null)baos.close();}catch(lOExceptione){)conn?disconnect();)returnnull;)/***向指定URL發(fā)送POST方法的請(qǐng)求*@paramurl發(fā)送請(qǐng)求的URL@paramparam請(qǐng)求參數(shù),請(qǐng)求參數(shù)應(yīng)該是namel=valuel&name2=value2的形式。@return所代表遠(yuǎn)程資源的響應(yīng)結(jié)果?throwsException*/publicstaticStringdoPost(Stringurl.Stringparam){PrintWriterout=null;BufferedReaderin=null;Stringresult="try{URLrealUrl=newURL(url);//打開和URL之間的連接HttpURLConnectionconn=(HttpURLConnection)realUrl.openConnection();〃設(shè)置通用的請(qǐng)求屬性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);//發(fā)送POST請(qǐng)求必須設(shè)置如下兩行conn?setDoOutput(true);conn?setDoInput(true);conn.setReadTimeout(TIMEOUT_IN_MILLIONS);conn.setConnectTimeout(TIMEOUT_IN_MILLIONS);if(param!=null&&!param.trim().equals("")){//獲取URLConnection對(duì)象對(duì)應(yīng)的輸出流out=newPrintwriter(conn.getOutputStream());//發(fā)送請(qǐng)求參數(shù)out.print(para
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 九年級(jí)上學(xué)期語文期末模擬考試試卷
- 售后服務(wù)部年終總結(jié)
- 一年級(jí)數(shù)學(xué)計(jì)算題專項(xiàng)練習(xí)集錦
- 二年級(jí)數(shù)學(xué)計(jì)算題專項(xiàng)練習(xí)1000題匯編
- 《數(shù)學(xué)物理方法》第1章測(cè)試題
- 母雞孵蛋課件教學(xué)課件
- 南京航空航天大學(xué)《傳感器與檢測(cè)技術(shù)》2021-2022學(xué)年第一學(xué)期期末試卷
- 南京工業(yè)大學(xué)浦江學(xué)院《土木工程制圖》2021-2022學(xué)年第一學(xué)期期末試卷
- 南京工業(yè)大學(xué)浦江學(xué)院《商務(wù)禮儀》2022-2023學(xué)年第一學(xué)期期末試卷
- 淮河新城二期##樓工程施工組織設(shè)計(jì)
- 肝衰竭肝功能衰竭
- 油站使用說明書
- 小學(xué)班主任工作經(jīng)驗(yàn)交流ppt
- 如何識(shí)別真假幣(共34張PPT)
- 2023屆高考數(shù)學(xué)復(fù)習(xí)微難點(diǎn)7 三角函數(shù)中ω的范圍問題(共11張PPT)
- 計(jì)算機(jī)科學(xué)與技術(shù)本科專業(yè)自評(píng)報(bào)告(共64頁)
- 工程建設(shè)情況匯報(bào)PPT課件
- GB∕T 39116-2020 智能制造能力成熟度模型
- 小學(xué)五年級(jí)數(shù)學(xué)《小數(shù)除法》ppt課件
- 什么是結(jié)晶PPT
- 工程項(xiàng)目施工成本控制
評(píng)論
0/150
提交評(píng)論