2021-01-31 Utils

/*

* framework工具

*/publicclassUtils{/** tag */privatestaticfinalStringTAG="Utils";/**

    * 安装某个应用

    *

    * @param context

    * @param apkFile

    * @return

    */publicstaticbooleaninstallApp(Contextcontext,FileapkFile){try{context.startActivity(getInstallAppIntent(apkFile));returntrue;}catch(Exceptione){Log.w(TAG,e);}returnfalse;}/**

    * 获取安装应用的Intent

    *

    * @param apkFile

    * @return

    */publicstaticIntentgetInstallAppIntent(FileapkFile){if(apkFile==null||!apkFile.exists()){returnnull;}Utils.chmod("777",apkFile.getAbsolutePath());Uriuri=Uri.fromFile(apkFile);Intentintent=newIntent(Intent.ACTION_VIEW);intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);intent.setDataAndType(uri,"application/vnd.android.package-archive");returnintent;}/**

    * �?查某个包名的App是否已经安装

    *

    * @param context

    * @param packageName

    * @return

    */publicstaticbooleanhasAppInstalled(Contextcontext,StringpackageName){try{PackageManagerpackageManager=context.getPackageManager();packageManager.getPackageInfo(packageName,PackageManager.GET_ACTIVITIES);}catch(Exceptione){returnfalse;}returntrue;}/**

    * 根据包名启动第三方App

    *

    * @param context

    * @param packageName

    * @return

    */publicstaticbooleanlaunchAppByPackageName(Contextcontext,StringpackageName){if(TextUtils.isEmpty(packageName)){returnfalse;}try{Intentintent=context.getPackageManager().getLaunchIntentForPackage(packageName);if(intent!=null){context.startActivity(intent);returntrue;}}catch(Exceptione){Log.w(TAG,e);}returnfalse;}publicstaticStringgetAssetsFie(Contextcontext,Stringname)throwsIOException{InputStreamis=context.getAssets().open(name);intsize=is.available();// Read the entire asset into a local byte buffer.byte[]buffer=newbyte[size];is.read(buffer);is.close();Stringcontent=newString(buffer,"UTF-8");returncontent;}/**

    * 是否为wifi连接状�??

    *

    * @param context

    * @return

    */publicstaticbooleanisWifiConnect(Contextcontext){ConnectivityManagerconnectivitymanager=(ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);NetworkInfonetworkinfo=connectivitymanager.getActiveNetworkInfo();if(networkinfo!=null){if("wifi".equals(networkinfo.getTypeName().toLowerCase(Locale.US))){returntrue;}}returnfalse;}/**

    * 是否有网络连�?

    *

    * @param context

    * @return

    */publicstaticbooleanisNetConnect(Contextcontext){ConnectivityManagerconnectivitymanager=(ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);NetworkInfonetworkinfo=connectivitymanager.getActiveNetworkInfo();returnnetworkinfo!=null;}/**

    * 获取权限

    *

    * @param permission

    *            权限

    * @param path

    *            文件路径

    */publicstaticvoidchmod(Stringpermission,Stringpath){try{Stringcommand="chmod "+permission+" "+path;Runtimeruntime=Runtime.getRuntime();runtime.exec(command);}catch(IOExceptione){Log.e(TAG,"chmod",e);}}/**

    * 是否安装了sdcard�?

    *

    * @return true表示有,false表示没有

    */publicstaticbooleanhaveSDCard(){if(android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)){returntrue;}returnfalse;}/**

    * 获取系统内部可用空间大小

    *

    * @return available size

    */publicstaticlonggetSystemAvailableSize(){Fileroot=Environment.getRootDirectory();StatFssf=newStatFs(root.getPath());longblockSize=sf.getBlockSize();longavailCount=sf.getAvailableBlocks();returnavailCount*blockSize;}/**

    * 获取sd卡可用空间大�?

    *

    * @return available size

    */publicstaticlonggetSDCardAvailableSize(){longavailable=0;if(haveSDCard()){Filepath=Environment.getExternalStorageDirectory();StatFsstatfs=newStatFs(path.getPath());longblocSize=statfs.getBlockSize();longavailaBlock=statfs.getAvailableBlocks();available=availaBlock*blocSize;}else{available=-1;}returnavailable;}/**

    * 获取application层级的metadata

    *

    * @param context

    * @param key

    * @return

    */publicstaticStringgetApplicationMetaData(Contextcontext,Stringkey){try{ObjectmetaObj=context.getPackageManager().getApplicationInfo(context.getPackageName(),PackageManager.GET_META_DATA).metaData.get(key);if(metaObjinstanceofString){returnmetaObj.toString();}elseif(metaObjinstanceofInteger){return((Integer)metaObj).intValue()+"";}elseif(metaObjinstanceofBoolean){return((Boolean)metaObj).booleanValue()+"";}}catch(NameNotFoundExceptione){Log.w(TAG,e);}return"";}/**

    * 获取版本�?

    *

    * @param context

    * @return

    */publicstaticStringgetVersionName(Contextcontext){try{returncontext.getPackageManager().getPackageInfo(context.getPackageName(),0).versionName;}catch(NameNotFoundExceptione){Log.w(TAG,e);}returnnull;}/**

    * 获取版本�?

    *

    * @param context

    * @return

    */publicstaticintgetVersionCode(Contextcontext){try{returncontext.getPackageManager().getPackageInfo(context.getPackageName(),0).versionCode;}catch(NameNotFoundExceptione){Log.w(TAG,e);}return0;}/**

    * 将px值转换为dip或dp值,保证尺寸大小不变

    *

    * @param pxValue

    * @param scale

    *            (DisplayMetrics类中属�?�density�?

    * @return

    */publicstaticintpx2dip(Contextcontext,floatpxValue){floatscale=context.getResources().getDisplayMetrics().density;return(int)(pxValue/scale+0.5f);}/**

    * 将dip或dp值转换为px值,保证尺寸大小不变

    *

    * @param dipValue

    * @param scale

    *            (DisplayMetrics类中属�?�density�?

    * @return

    */publicstaticintdip2px(Contextcontext,floatdipValue){floatscale=context.getResources().getDisplayMetrics().density;return(int)(dipValue*scale+0.5f);}/**

    * 将px值转换为sp值,保证文字大小不变

    *

    * @param pxValue

    * @param fontScale

    *            (DisplayMetrics类中属�?�scaledDensity�?

    * @return

    */publicstaticintpx2sp(Contextcontext,floatpxValue){floatfontScale=context.getResources().getDisplayMetrics().scaledDensity;return(int)(pxValue/fontScale+0.5f);}/**

    * 将sp值转换为px值,保证文字大小不变

    *

    * @param spValue

    * @param fontScale

    *            (DisplayMetrics类中属�?�scaledDensity�?

    * @return

    */publicstaticintsp2px(Contextcontext,floatspValue){floatfontScale=context.getResources().getDisplayMetrics().scaledDensity;return(int)(spValue*fontScale+0.5f);}/**

    * 隐藏键盘

    *

    * @param activity

    *            activity

    */publicstaticvoidhideInputMethod(Activityactivity){hideInputMethod(activity,activity.getCurrentFocus());}/**

    * 隐藏键盘

    *

    * @param context

    *            context

    * @param view

    *            The currently focused view

    */publicstaticvoidhideInputMethod(Contextcontext,Viewview){if(context==null||view==null){return;}InputMethodManagerimm=(InputMethodManager)context.getSystemService(Context.INPUT_METHOD_SERVICE);if(imm!=null){imm.hideSoftInputFromWindow(view.getWindowToken(),0);}}/**

    * 显示输入键盘

    *

    * @param context

    *            context

    * @param view

    *            The currently focused view, which would like to receive soft

    *            keyboard input

    */publicstaticvoidshowInputMethod(Contextcontext,Viewview){if(context==null||view==null){return;}InputMethodManagerimm=(InputMethodManager)context.getSystemService(Context.INPUT_METHOD_SERVICE);if(imm!=null){imm.showSoftInput(view,0);}}/**

    * Bitmap缩放,注意源Bitmap在缩放后将会被回收�??

    *

    * @param origin

    * @param width

    * @param height

    * @return

    */publicstaticBitmapgetScaleBitmap(Bitmaporigin,intwidth,intheight){floatoriginWidth=origin.getWidth();floatoriginHeight=origin.getHeight();Matrixmatrix=newMatrix();floatscaleWidth=((float)width)/originWidth;floatscaleHeight=((float)height)/originHeight;matrix.postScale(scaleWidth,scaleHeight);Bitmapscale=Bitmap.createBitmap(origin,0,0,(int)originWidth,(int)originHeight,matrix,true);origin.recycle();returnscale;}/**

    * 计算某一时间与现在时间间隔的文字提示

    */publicstaticStringcountTimeIntervalText(longtime){longdTime=System.currentTimeMillis()-time;// 15分钟if(dTime<15*60*1000){return"刚刚";}elseif(dTime<60*60*1000){// �?小时return"�?小时�?";}elseif(dTime<24*60*60*1000){return(int)(dTime/(60*60*1000))+"小时�?";}else{returnDateFormat.format("MM-dd kk:mm",System.currentTimeMillis()).toString();}}/**

    * 获取通知栏高�?

    *

    * @param context

    * @return

    */publicstaticintgetStatusBarHeight(Contextcontext){intx=0,statusBarHeight=0;try{Class<?>c=Class.forName("com.android.internal.R$dimen");Objectobj=c.newInstance();Fieldfield=c.getField("status_bar_height");x=Integer.parseInt(field.get(obj).toString());statusBarHeight=context.getResources().getDimensionPixelSize(x);}catch(Exceptione1){e1.printStackTrace();}returnstatusBarHeight;}/**

    * 获取标题栏高�?

    *

    * @param context

    * @return

    */publicstaticintgetTitleBarHeight(Activitycontext){intcontentTop=context.getWindow().findViewById(Window.ID_ANDROID_CONTENT).getTop();returncontentTop-getStatusBarHeight(context);}/**

    * 获取屏幕宽度,px

    *

    * @param context

    * @return

    */publicstaticfloatgetScreenWidth(Contextcontext){DisplayMetricsdm=context.getResources().getDisplayMetrics();returndm.widthPixels;}/**

    * 获取屏幕高度,px

    *

    * @param context

    * @return

    */publicstaticfloatgetScreenHeight(Contextcontext){DisplayMetricsdm=context.getResources().getDisplayMetrics();returndm.heightPixels;}/**

    * 获取屏幕像素密度

    *

    * @param context

    * @return

    */publicstaticfloatgetDensity(Contextcontext){DisplayMetricsdm=context.getResources().getDisplayMetrics();returndm.density;}/**

    * 获取scaledDensity

    *

    * @param context

    * @return

    */publicstaticfloatgetScaledDensity(Contextcontext){DisplayMetricsdm=context.getResources().getDisplayMetrics();returndm.scaledDensity;}/**

    * 获取当前小时分钟�?24小时�?

    *

    * @return

    */publicstaticStringgetTime24Hours(){SimpleDateFormatformatter=newSimpleDateFormat("HH:mm",Locale.CHINA);DatecurDate=newDate(System.currentTimeMillis());// 获取当前时间returnformatter.format(curDate);}/**

    * 获取电池电量,0~1

    *

    * @param context

    * @return

    */@SuppressWarnings("unused")publicstaticfloatgetBattery(Contextcontext){IntentbatteryInfoIntent=context.getApplicationContext().registerReceiver(null,newIntentFilter(Intent.ACTION_BATTERY_CHANGED));intstatus=batteryInfoIntent.getIntExtra("status",0);inthealth=batteryInfoIntent.getIntExtra("health",1);booleanpresent=batteryInfoIntent.getBooleanExtra("present",false);intlevel=batteryInfoIntent.getIntExtra("level",0);intscale=batteryInfoIntent.getIntExtra("scale",0);intplugged=batteryInfoIntent.getIntExtra("plugged",0);intvoltage=batteryInfoIntent.getIntExtra("voltage",0);inttemperature=batteryInfoIntent.getIntExtra("temperature",0);// 温度的单位是10�?Stringtechnology=batteryInfoIntent.getStringExtra("technology");return((float)level)/scale;}/**

    * 获取手机名称

    *

    * @return

    */publicstaticStringgetMobileName(){returnandroid.os.Build.MANUFACTURER+" "+android.os.Build.MODEL;}/**

    * 是否安装了sdcard�?

    *

    * @return true表示有,false表示没有

    */publicstaticbooleanhasSDCard(){if(android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)){returntrue;}returnfalse;}/**

    * 获取sd卡可用空�?

    *

    * @return available size

    */publicstaticlonggetAvailableExternalSize(){longavailable=0;if(hasSDCard()){Filepath=Environment.getExternalStorageDirectory();StatFsstatfs=newStatFs(path.getPath());longblocSize=statfs.getBlockSize();longavailaBlock=statfs.getAvailableBlocks();available=availaBlock*blocSize;}else{available=-1;}returnavailable;}/**

    * 获取内存可用空间

    *

    * @return available size

    */publicstaticlonggetAvailableInternalSize(){longavailable=0;if(hasSDCard()){Filepath=Environment.getRootDirectory();StatFsstatfs=newStatFs(path.getPath());longblocSize=statfs.getBlockSize();longavailaBlock=statfs.getAvailableBlocks();available=availaBlock*blocSize;}else{available=-1;}returnavailable;}/*

    * 版本控制部分

    *//**

    * 是否�?2.2版本及以�?

    *

    * @return

    */publicstaticbooleanhasFroyo(){returnBuild.VERSION.SDK_INT>=Build.VERSION_CODES.FROYO;}/**

    * 是否�?2.3版本及以�?

    *

    * @return

    */publicstaticbooleanhasGingerbread(){returnBuild.VERSION.SDK_INT>=Build.VERSION_CODES.GINGERBREAD;}/**

    * 是否�?3.0版本及以�?

    *

    * @return

    */publicstaticbooleanhasHoneycomb(){returnBuild.VERSION.SDK_INT>=Build.VERSION_CODES.HONEYCOMB;}/**

    * 是否�?3.1版本及以�?

    *

    * @return

    */publicstaticbooleanhasHoneycombMR1(){returnBuild.VERSION.SDK_INT>=Build.VERSION_CODES.HONEYCOMB_MR1;}/**

    * 是否�?4.1版本及以�?

    *

    * @return

    */publicstaticbooleanhasJellyBean(){returnBuild.VERSION.SDK_INT>=Build.VERSION_CODES.JELLY_BEAN;}publicstaticStringgetPhoneType(){StringphoneType=android.os.Build.MODEL;Log.d(TAG,"phoneType is : "+phoneType);returnphoneType;}/**

    * 获取系统版本�?

    *

    * @return

    */publicstaticStringgetOsVersion(){Stringosversion;intosversion_int=getOsVersionInt();osversion=osversion_int+"";returnosversion;}/**

    * 获取系统版本�?

    *

    * @return

    */publicstaticintgetOsVersionInt(){returnBuild.VERSION.SDK_INT;}/**

    * 获取ip地址

    *

    * @return

    */publicstaticStringgetHostIp(){try{for(Enumeration<NetworkInterface>en=NetworkInterface.getNetworkInterfaces();en.hasMoreElements();){NetworkInterfaceintf=en.nextElement();for(Enumeration<InetAddress>enumIpAddr=intf.getInetAddresses();enumIpAddr.hasMoreElements();){InetAddressinetAddress=enumIpAddr.nextElement();if(!inetAddress.isLoopbackAddress()&&InetAddressUtils.isIPv4Address(inetAddress.getHostAddress())){if(!inetAddress.getHostAddress().toString().equals("null")&&inetAddress.getHostAddress()!=null){returninetAddress.getHostAddress().toString().trim();}}}}}catch(Exceptionex){Log.e("WifiPreference IpAddress",ex.toString());}return"";}/**

    * 获取手机号,几乎获取不到

    *

    * @param context

    * @return

    */publicstaticStringgetPhoneNum(Contextcontext){TelephonyManagermTelephonyMgr=(TelephonyManager)context.getApplicationContext().getSystemService(Context.TELEPHONY_SERVICE);StringphoneNum=mTelephonyMgr.getLine1Number();returnTextUtils.isEmpty(phoneNum)?"":phoneNum;}/**

    * 获取imei�?

    *

    * @param context

    * @return

    */publicstaticStringgetPhoneImei(Contextcontext){TelephonyManagermTelephonyMgr=(TelephonyManager)context.getApplicationContext().getSystemService(Context.TELEPHONY_SERVICE);StringphoneImei=mTelephonyMgr.getDeviceId();Log.d(TAG,"IMEI is : "+phoneImei);returnTextUtils.isEmpty(phoneImei)?"":phoneImei;}/**

    * 获取imsi�?

    *

    * @param context

    * @return

    */publicstaticStringgetPhoneImsi(Contextcontext){TelephonyManagermTelephonyMgr=(TelephonyManager)context.getApplicationContext().getSystemService(Context.TELEPHONY_SERVICE);StringphoneImsi=mTelephonyMgr.getSubscriberId();Log.d(TAG,"IMSI is : "+phoneImsi);returnTextUtils.isEmpty(phoneImsi)?"":phoneImsi;}/**

    * 获取mac地址

    *

    * @return

    */publicstaticStringgetLocalMacAddress(){StringMac=null;try{Stringpath="sys/class/net/wlan0/address";if((newFile(path)).exists()){FileInputStreamfis=newFileInputStream(path);byte[]buffer=newbyte[8192];intbyteCount=fis.read(buffer);if(byteCount>0){Mac=newString(buffer,0,byteCount,"utf-8");}fis.close();}if(Mac==null||Mac.length()==0){path="sys/class/net/eth0/address";FileInputStreamfis=newFileInputStream(path);byte[]buffer_name=newbyte[8192];intbyteCount_name=fis.read(buffer_name);if(byteCount_name>0){Mac=newString(buffer_name,0,byteCount_name,"utf-8");}fis.close();}if(Mac==null||Mac.length()==0){return"";}elseif(Mac.endsWith("\n")){Mac=Mac.substring(0,Mac.length()-1);}}catch(Exceptionio){Log.w(TAG,"Exception",io);}returnTextUtils.isEmpty(Mac)?"":Mac;}/**

    * 获取重复字段�?多的个数

    *

    * @param s

    * @return

    */publicstaticintgetRepeatTimes(Strings){if(TextUtils.isEmpty(s)){return0;}intmCount=0;char[]mChars=s.toCharArray();HashMap<Character,Integer>map=newHashMap<Character,Integer>();for(inti=0;i<mChars.length;i++){charkey=mChars[i];Integervalue=map.get(key);intcount=value==null?0:value.intValue();map.put(key,++count);if(mCount<count){mCount=count;}}returnmCount;}/**

    * �?单判断是否为手机号码

    *

    * @param num

    * @return

    */publicstaticbooleanisPhoneNum(Stringnum){// 确保每一位都是数�?return!TextUtils.isEmpty(num)&&num.matches("1[0-9]{10}")&&!isRepeatedStr(num)&&!isContinuousNum(num);}/**

    * 判断是否400服务代码

    *

    * @param num

    * @return

    */publicstaticbooleanis400or800(Stringnum){return!TextUtils.isEmpty(num)&&(num.startsWith("400")||num.startsWith("800"))&&num.length()==10;}/**

    * 判断是否区域号码

    *

    * @param num

    * @return

    */publicstaticbooleanisAdCode(Stringnum){return!TextUtils.isEmpty(num)&&num.matches("[0]{1}[0-9]{2,3}")&&!isRepeatedStr(num);}/**

    * 判断是否座机号码

    *

    * @param num

    * @return

    */publicstaticbooleanisPhoneHome(Stringnum){return!TextUtils.isEmpty(num)&&num.matches("[0-9]{7,8}")&&!isRepeatedStr(num);}/**

    * 判断是否为重复字符串

    *

    * @param str

    *            ,需要检查的字符�?

    */publicstaticbooleanisRepeatedStr(Stringstr){if(TextUtils.isEmpty(str)){returnfalse;}intlen=str.length();if(len<=1){returnfalse;}else{charfirstChar=str.charAt(0);// 第一个字�?for(inti=1;i<len;i++){charnextChar=str.charAt(i);// 第i个字�?if(firstChar!=nextChar){returnfalse;}}returntrue;}}/**

    * 判断字符串是否为连续数字 45678901�?

    */publicstaticbooleanisContinuousNum(Stringstr){if(TextUtils.isEmpty(str))returnfalse;if(!isNumbericString(str))returntrue;intlen=str.length();for(inti=0;i<len-1;i++){charcurChar=str.charAt(i);charverifyChar=(char)(curChar+1);if(curChar=='9')verifyChar='0';charnextChar=str.charAt(i+1);if(nextChar!=verifyChar){returnfalse;}}returntrue;}/**

    * 判断字符串是否为连续字母 xyZaBcd�?

    */publicstaticbooleanisContinuousWord(Stringstr){if(TextUtils.isEmpty(str))returnfalse;if(!isAlphaBetaString(str))returntrue;intlen=str.length();Stringlocal=str.toLowerCase();for(inti=0;i<len-1;i++){charcurChar=local.charAt(i);charverifyChar=(char)(curChar+1);if(curChar=='z')verifyChar='a';charnextChar=local.charAt(i+1);if(nextChar!=verifyChar){returnfalse;}}returntrue;}/**

    * 判断是否为纯数字

    *

    * @param str

    *            ,需要检查的字符�?

    */publicstaticbooleanisNumbericString(Stringstr){if(TextUtils.isEmpty(str)){returnfalse;}Patternp=Pattern.compile("^[0-9]+$");// 从开头到结尾必须全部为数�?Matcherm=p.matcher(str);returnm.find();}/**

    * 判断是否为纯字母

    *

    * @param str

    * @return

    */publicstaticbooleanisAlphaBetaString(Stringstr){if(TextUtils.isEmpty(str)){returnfalse;}Patternp=Pattern.compile("^[a-zA-Z]+$");// 从开头到结尾必须全部为字母或者数�?Matcherm=p.matcher(str);returnm.find();}/**

    * 判断是否为纯字母或数�?

    *

    * @param str

    * @return

    */publicstaticbooleanisAlphaBetaNumbericString(Stringstr){if(TextUtils.isEmpty(str)){returnfalse;}Patternp=Pattern.compile("^[a-zA-Z0-9]+$");// 从开头到结尾必须全部为字母或者数�?Matcherm=p.matcher(str);returnm.find();}privatestaticStringregEx="[\u4e00-\u9fa5]";privatestaticPatternpat=Pattern.compile(regEx);/**

    * 判断是否包含中文

    *

    * @param str

    * @return

    */publicstaticbooleanisContainsChinese(Stringstr){returnpat.matcher(str).find();}publicstaticbooleanpatternMatcher(Stringpattern,Stringinput){if(TextUtils.isEmpty(pattern)||TextUtils.isEmpty(input)){returnfalse;}Patternpat=Pattern.compile(pattern);Matchermatcher=pat.matcher(input);returnmatcher.find();}/****************************************************************************/// import PPutilsprivatestaticintid=1;publicstaticintgetNextId(){returnid++;}/**

    * 将输入流转为字节数组

    *

    * @param inStream

    * @return

    * @throws Exception

    */publicstaticbyte[]read2Byte(InputStreaminStream)throwsException{ByteArrayOutputStreamoutSteam=newByteArrayOutputStream();byte[]buffer=newbyte[1024];intlen=0;while((len=inStream.read(buffer))!=-1){outSteam.write(buffer,0,len);}outSteam.close();inStream.close();returnoutSteam.toByteArray();}/**

    * 判断是否符合月和年的过期时间规则

    *

    * @param date

    * @return

    */publicstaticbooleanisMMYY(Stringdate){try{if(!TextUtils.isEmpty(date)&&date.length()==4){intmm=Integer.parseInt(date.substring(0,2));returnmm>0&&mm<13;}}catch(Exceptione){Log.e(TAG,"Exception",e);}returnfalse;}/**

    * 20120506 共八位,前四�?-年,中间两位-月,�?后两�?-�?

    *

    * @param date

    * @return

    */publicstaticbooleanisRealDate(Stringdate,intyearlen){// if(yearlen != 2 && yearlen != 4)// return false;intlen=4+yearlen;if(date==null||date.length()!=len)returnfalse;if(!date.matches("[0-9]+"))returnfalse;intyear=Integer.parseInt(date.substring(0,yearlen));intmonth=Integer.parseInt(date.substring(yearlen,yearlen+2));intday=Integer.parseInt(date.substring(yearlen+2,yearlen+4));if(year<=0)returnfalse;if(month<=0||month>12)returnfalse;if(day<=0||day>31)returnfalse;switch(month){case4:case6:case9:case11:returnday>30?false:true;case2:if(year%4==0&&year%100!=0||year%400==0)returnday>29?false:true;returnday>28?false:true;default:returntrue;}}/**

    * 判断字符串是否为连续字符 abcdef 45678�?

    */publicstaticbooleanisContinuousStr(Stringstr){if(TextUtils.isEmpty(str))returnfalse;intlen=str.length();for(inti=0;i<len;i++){charcurChar=str.charAt(i);charnextChar=(char)(curChar+1);if(i+1<len){nextChar=str.charAt(i+1);}if(nextChar!=(curChar+1)){returnfalse;}}returntrue;}publicstaticfinalStringREGULAR_NUMBER="(-?[0-9]+)(,[0-9]+)*(\\.[0-9]+)?";/**

    * 为字符串中的数字染颜�?

    *

    * @param str

    *            ,待处理的字符串

    * @param color

    *            ,需要染的颜�?

    * @return

    */publicstaticSpannableStringsetDigitalColor(Stringstr,intcolor){if(str==null)returnnull;SpannableStringspan=newSpannableString(str);Patternp=Pattern.compile(REGULAR_NUMBER);Matcherm=p.matcher(str);while(m.find()){intstart=m.start();intend=start+m.group().length();span.setSpan(newForegroundColorSpan(color),start,end,Spannable.SPAN_EXCLUSIVE_INCLUSIVE);}returnspan;}publicstaticbooleanisChineseByREG(Stringstr){if(str==null){returnfalse;}Patternpattern=Pattern.compile("[\\u4E00-\\u9FBF]+");returnpattern.matcher(str.trim()).find();}publicstaticStringgetFixedNumber(Stringstr,intlength){if(str==null||length<=0||str.length()<length){returnnull;}Log.d(TAG,"getFixedNumber, str is : "+str);Patternp=Pattern.compile("\\d{"+length+"}");Matcherm=p.matcher(str);Stringresult=null;if(m.find()){intstart=m.start();intend=start+m.group().length();result=str.substring(start,end);}returnresult;}publicstaticintgetLengthWithoutSpace(CharSequences){intlen=s.length();intrlen=0;for(inti=0;i<len;i++){if(s.charAt(i)!=' ')rlen++;}returnrlen;}/**

    * 获取控件的宽度,如果获取的高度为0,则重新计算尺寸后再返回高度

    *

    * @param view

    * @return

    */publicstaticintgetViewMeasuredWidth(TextViewview){// int height = view.getMeasuredHeight();// if(0 < height){// return height;// }calcViewMeasure(view);returnview.getMeasuredWidth();}/**

    * 获取控件的高度,如果获取的高度为0,则重新计算尺寸后再返回高度

    *

    * @param view

    * @return

    */publicstaticintgetViewMeasuredHeight(TextViewview){// int height = view.getMeasuredHeight();// if(0 < height){// return height;// }calcViewMeasure(view);returnview.getMeasuredHeight();}/**

    * 测量控件的尺�?

    *

    * @param view

    */publicstaticvoidcalcViewMeasure(Viewview){// int width =// View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED);// int height =// View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED);// view.measure(width,height);intwidth=View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED);intexpandSpec=View.MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE>>2,View.MeasureSpec.AT_MOST);view.measure(width,expandSpec);}publicstaticStringgetDisDsrc(floatdis){if(dis<=0){return"";}StringdisStr=null;if(dis>1000){disStr=(float)Math.round(dis/1000*10)/10+"km";}else{disStr=dis+"m";}returndisStr;}publicstaticbooleanisValidDate(Stringstr){booleanconvertSuccess=true;// 指定日期格式为四位年/两位月份/两位日期,注意yyyy/MM/dd区分大小写;SimpleDateFormatformat=newSimpleDateFormat("yyyy-MM");try{// 设置lenient为false.// 否则SimpleDateFormat会比较宽松地验证日期,比�?2007/02/29会被接受,并转换�?2007/03/01format.setLenient(false);format.parse(str);}catch(ParseExceptione){// e.printStackTrace();// 如果throw java.text.ParseException或�?�NullPointerException,就说明格式不对convertSuccess=false;}returnconvertSuccess;}}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容