/**============================================================ * 版权: 久其软件 版权所有 (c) * 包: com.jiuqi.muchmore.clothing.common.tools * 修改记录: * 日期 作者 内容 * ============================================================= * 2012-6-8 Administrator * ============================================================*/ package com.jiuqi.util; import java.lang.reflect.Field; import java.text.DecimalFormat; import java.text.NumberFormat; import java.util.Calendar; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; import android.app.Activity; import android.app.AlertDialog; import android.app.DatePickerDialog; import android.app.Dialog; import android.content.Context; import android.content.DialogInterface; import android.content.DialogInterface.OnClickListener; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.Bitmap.Config; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.PorterDuff; import android.graphics.PorterDuffXfermode; import android.graphics.Typeface; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.net.Uri; import android.telephony.SmsManager; import android.text.InputFilter; import android.text.Spanned; import android.text.TextUtils; import android.util.DisplayMetrics; import android.view.View; import android.widget.EditText; import android.widget.TableLayout; import android.widget.TableRow; import android.widget.TextView; import android.widget.Toast; import com.jqyd.uilib.R; /** * <p> * 界面上用的一些常用方法 * </p> * * @author Administrator */ public class UIUtil { public static DecimalFormat getDecimalFormat() { DecimalFormat df = (DecimalFormat) NumberFormat.getInstance(); df.applyPattern("##.#"); return df; } /** * 返回到登录页 * * @param context */ // public static void redirectLoginPage(Context context){ // Intent intent = new Intent(); // intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); // if(LoginManager.getInstance().getLoginSystem()==LoginSystem.MMC) // intent.setClass(context, Login.class); // else // intent.setClass(context, OLInitActivity.class); // intent.putExtra("exit", true); // context.startActivity(intent); // } /** * 返回到主页 * * @param context */ // public static void redirectMainPage(Context context){ // Intent intent = new Intent(); // intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); // intent.setClass(context, MainActivity.class); // context.startActivity(intent); // } // public static void redirectMainPage(Activity context){ // finishFunction(context); // } /** * 显示文字 * * @param context * @param msg */ public static void showMsg(Context context, String msg) { // Toast m = Toast.makeText(context, msg, Toast.LENGTH_SHORT).show(); // m.setGravity(Gravity.CENTER_HORIZONTAL|Gravity.CENTER_VERTICAL, 0, // 0); // m.show(); } /** * 显示文字 * * @param context * @param info */ public static void showMsg(Context context, int info) { Toast.makeText(context, info, Toast.LENGTH_SHORT).show(); } /** * status:true,则对话框点击后消失,false则不消失 * * @param dialog * @param status * void */ public static void processDialog(DialogInterface dialog, boolean status) { try { Field field = dialog.getClass().getSuperclass() .getDeclaredField("mShowing"); field.setAccessible(true); field.set(dialog, status); } catch (Exception e) { e.printStackTrace(); } } /** * 打电话 * * @param context * @param mobile */ public static void dial(Context context, String mobile) { /* 建构一个新的Intent并执行action.CALL的常数与透过Uri将字符串带入 */ Intent myIntentDial = new Intent("android.intent.action.CALL", Uri.parse("tel:" + mobile)); /* 在startActivity()方法中带入自定义的Intent对象以执行拨打电话的工作 */ context.startActivity(myIntentDial); } /** * 拨打电话,先弹出对话框 * * @param context * @param mobile */ public static void tryToDial(final Context context, final String mobile) { if (TextUtils.isEmpty(mobile)) { UIUtil.showMsg(context, "电话号码内容为空"); } else { if (TextUtils.isDigitsOnly(mobile)) { AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setMessage("要给 " + mobile + " 打电话?"); builder.setPositiveButton("是", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { try { UIUtil.dial(context, mobile); } catch (Exception e) { e.printStackTrace(); UIUtil.showMsg(context, "很抱歉出现异常,异常信息为" + e.getMessage()); } } }); builder.setNegativeButton("否", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { dialog.cancel(); } }); builder.create().show(); } else { UIUtil.showMsg(context, "号码格式不正确,应该为纯数字"); } } } /** * 直接发短信 * * @param context * @param phonenumber * @param msg */ public static void sendSMS(Context context, String phonenumber, String msg) { SmsManager sms = SmsManager.getDefault(); sms.sendTextMessage(phonenumber, null, msg, null, null);// 发送信息到指定号码 } public static void sendSMS(Context context, String[] phonenumbers, String msg) { SmsManager sms = SmsManager.getDefault(); sms.sendTextMessage(formatMobiles(phonenumbers), null, msg, null, null);// 发送信息到指定号码 } public static String formatMobiles(String[] phonenumbers) { StringBuffer sb = new StringBuffer(); String mobiles = ""; for (String s : phonenumbers) { sb.append(s).append(","); } if (sb.toString().indexOf(",") == -1) { mobiles = sb.toString(); } else { mobiles = sb.toString().substring(0, sb.lastIndexOf(",")); } return mobiles; } /** * 调用短信界面,由客户发送短信 * * @param context * @param phonenumber * @param msg */ public static void sendSmsUi(Context context, String phonenumber, String msg) { Uri smsToUri = Uri.parse("smsto:" + phonenumber); Intent intent = new Intent(Intent.ACTION_SENDTO, smsToUri); intent.putExtra("sms_body", msg); context.startActivity(intent); } public static void sendSmsUi(Context context, String[] phonenumbers, String msg) { Uri smsToUri = Uri.parse("smsto:" + formatMobiles(phonenumbers)); Intent intent = new Intent(Intent.ACTION_SENDTO, smsToUri); intent.putExtra("sms_body", msg); context.startActivity(intent); } /** * 得到鱼儿多的认证中心地址 * * @param context * @return URL */ // public static URL getUacUrl(Context context){ // String url = getConfigByName(context, ConfigTag.Uac); // try { // return new URL(url); // } catch (MalformedURLException e) { // throw new IllegalArgumentException("配置文件格式错误:"+url); // } // } /** * 通过标签名称读取配置文件值 * * @param context * @param name * @return */ // public static String getConfigByName(Context context,String name){ // if(name==null)throw new IllegalArgumentException("name is can not null"); // InputStream in = null; // try{ // Document doc = getMMCConfig(context); // NodeList configs = // doc.getElementsByTagName(context.getString(R.string.ConfigTagName)); // String uacurl = ""; // for(int i = 0; i < configs.getLength(); i++){ // Element e = (Element)configs.item(i); // if(name.equalsIgnoreCase(e.getAttribute(context.getString(R.string.ConfigAttrName)))){ // uacurl = e.getAttribute(context.getString(R.string.ConfigAttrValue)); // break; // } // } // return uacurl; // } // catch(Exception e){ // throw new RuntimeException(e); // } // finally{ // try{ // if(null != in){ // in.close(); // } // } // catch(Exception e){ // UIUtil.showMsg(context, "配置文件IO错误: " + e.getMessage()); // e.printStackTrace(); // } // } // } /** * 得到鱼儿多配置文件 * * @param context * @return Document */ // public static Document getMMCConfig(Context context){ // InputStream in = null; // Document doc = null; // try{ // in = context.getResources().openRawResource(R.raw.mmc_config); // DocumentBuilder builder = // DocumentBuilderFactory.newInstance().newDocumentBuilder(); // doc = builder.parse(in, null); // } // catch(ParserConfigurationException e){ // e.printStackTrace(); // UIUtil.showMsg(context, "配置文件ParserConfigurationException: " + // e.getMessage()); // } // catch(FactoryConfigurationError e){ // e.printStackTrace(); // UIUtil.showMsg(context, "配置文件FactoryConfigurationError: " + // e.getMessage()); // } // catch(SAXException e){ // e.printStackTrace(); // UIUtil.showMsg(context, "配置文件SAXException: " + e.getMessage()); // } // catch(IOException e){ // e.printStackTrace(); // UIUtil.showMsg(context, "配置文件IO错误: " + e.getMessage()); // } // finally{ // try{ // if(null != in){ // in.close(); // } // } // catch(Exception e){ // e.printStackTrace(); // UIUtil.showMsg(context, "配置文件IO错误: " + e.getMessage()); // } // } // return doc; // } /** * 设置框架内部具体内容 * * @param activity * @param R * .Layout.id * @return */ // public static View initFrameContentView(Activity activity, int id){ // return initFrameContentView(activity, id, false); // } /** * 设置框架内部具体内容,同旧方法一样,最后传递true,则使用带页面底部按钮风格的背景图片 * * @param activity * @param id * @param hasBottomButton * true则显示有底部按钮背景的页面背景图片 * @return View */ // public static View initFrameContentView(Activity activity, int id, // boolean hasBottomButton){ // if(hasBottomButton){ // activity.setContentView(R.layout.inc_framelayout5); // } // else{ // activity.setContentView(R.layout.inc_framelayout4); // } // // DisplayMetrics dm = new DisplayMetrics(); // activity.getWindowManager().getDefaultDisplay().getMetrics(dm); // // float density = dm.density; // 屏幕密度(像素比例:0.75/1.0/1.5/2.0) // int densityDPI = dm.densityDpi; // 屏幕密度(每寸像素:120/160/240/320) // //float xdpi = dm.xdpi; // //float ydpi = dm.ydpi; // // //Log.e("MMC" + " DisplayMetrics", "xdpi=" + xdpi + "; ydpi=" + ydpi); // //Log.e("MMC" + " DisplayMetrics", "density=" + density + // "; densityDPI=" + densityDPI); // // //int screenWidthDip = dm.widthPixels; // 屏幕宽(dip,如:320dip) // //int screenHeightDip = dm.heightPixels; // 屏幕宽(dip,如:533dip) // // //Log.e("MMC" + " DisplayMetrics(222)", "screenWidthDip=" + // screenWidthDip + "; screenHeightDip=" + screenHeightDip); // // int screenWidth = (int)(dm.widthPixels * density + 0.5f); // // 屏幕宽(px,如:480px) // int screenHeight = (int)(dm.heightPixels * density + 0.5f); // // 屏幕高(px,如:800px) // // if(density <= 1){ // //针对320x480特殊处理 // // if(densityDPI == 160 && screenWidth == 320 && screenHeight == 480){ // // View incTopBar = activity.findViewById(R.id.incTopBar); // // RelativeLayout.LayoutParams l = new // RelativeLayout.LayoutParams(incTopBar.getLayoutParams()); // // l.height=UIUtil.dip2px(activity, 33); // // l.topMargin = UIUtil.dip2px(activity, 10); // // l.leftMargin = UIUtil.dip2px(activity, 7); // // l.rightMargin = UIUtil.dip2px(activity, 7); // // incTopBar.setLayoutParams(l); // // } // }else if(density > 1 && density < 2){ // // }else if(density >=2 ){ // // } // // ViewGroup view = (ViewGroup)activity.findViewById(R.id.rlFrameMiddle); // // LayoutInflater inflater = LayoutInflater.from(activity); // return inflater.inflate(id, view); // } public static void confirm(Context context, String message, DialogInterface.OnClickListener confirmHandler) { AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setMessage(message); builder.setPositiveButton("确定", confirmHandler); builder.setNegativeButton(Constants.CANCEL_TEXT, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { dialog.cancel(); } }); builder.create().show(); } public static void confirm(Context context, String message, DialogInterface.OnClickListener confirmHandler, String positiveTitle, String negativeTitle) { AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setMessage(message); builder.setPositiveButton(positiveTitle, confirmHandler); builder.setNegativeButton(negativeTitle, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { dialog.cancel(); } }); builder.create().show(); } public static void alert(Context context, String message, DialogInterface.OnClickListener confirmHandler) { AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setMessage(message); // builder.sett builder.setPositiveButton("确定", confirmHandler); builder.create().show(); } /** * 显示退出对话框 * * @param context * void */ public static void showExitSystemDialog(final Activity activity) { AlertDialog.Builder builder = new AlertDialog.Builder(activity); builder.setMessage("您确定要退出吗? "); builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { activity.finish(); android.os.Process.killProcess(android.os.Process.myPid()); } }); builder.setNegativeButton(Constants.CANCEL_TEXT, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { dialog.cancel(); } }); builder.create().show(); } public static double tryToDouble(String str) { try { return Double.parseDouble(str); } catch (NumberFormatException e) { return 0; } } public static long tryToLong(String str) { try { return Long.parseLong(str); } catch (NumberFormatException e) { return 0; } } public static int tryToInteger(String str) { try { return Integer.parseInt(str); } catch (NumberFormatException e) { return 0; } } public static void toggleShowView(View view) { if (view.getVisibility() == View.GONE || view.getVisibility() == View.INVISIBLE) { showView(view); } else { hideView(view); } } public static void showView(View view) { // Animation animation = new AlphaAnimation(0, 1.0f); // animation.setDuration(500); // view.setAnimation(animation); view.setVisibility(View.VISIBLE); } public static void hideView(View view) { // Animation animation = new AlphaAnimation(0, 1.0f); // animation.setDuration(500); // view.setAnimation(animation); view.setVisibility(View.GONE); } /** * 设置控件可用状态 * * @param isEnable */ public static void setWidgetEnabled(View view, boolean isEnable) { if (null != view) { view.setEnabled(isEnable); view.setClickable(isEnable); view.setFocusable(isEnable); } } /** * 处理当前网络不可用 * * @param context */ public static void alertNetIsClose(Context context) { alertNetIsClose(context, null); } /** * 处理当前网络不可用 * * @param context */ public static void alertNetIsClose(Context context, final Runnable r) { alert(context, "当前网络不可用,此功能需要可用的网络支持。", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { if (r != null) { r.run(); } } }); } public static String ToString(Object str) { String res = ""; if (str != null) { String ss = str.toString(); if (!TextUtils.isEmpty(ss)) { res = ss.trim(); } } return res; } /** * DIP转PX * * @param context * @param dipValue * @return int */ public static int dip2px(Context context, float dipValue) { final float scale = context.getResources().getDisplayMetrics().density; return (int) (dipValue * scale + 0.5f); } /** * PX转DIP * * @param context * @param pxValue * @return int */ public static int px2dip(Context context, float pxValue) { final float scale = context.getResources().getDisplayMetrics().density; return (int) (pxValue / scale + 0.5f); } /** * 根据文字转图片 * * @param text * @return Drawable */ public static Drawable getTxtIMG(Context context, String text) { return getTxtIMG(context, text, true); } /** * 根据文字转图片 * * @param context * @param text * @param left * true:文字在画布左侧,False:文字在画布右侧 * @return */ public static Drawable getTxtIMG(Context context, String text, boolean left) { DisplayMetrics dm = new DisplayMetrics(); ((Activity) context).getWindowManager().getDefaultDisplay() .getMetrics(dm); float density = dm.density; // 屏幕密度(像素比例:0.75/1.0/1.5/2.0) int densityDPI = dm.densityDpi; // 屏幕密度(每寸像素:120/160/240/320) int screenWidth = (int) (dm.widthPixels * density + 0.5f); // 屏幕宽(px,如:480px) int screenHeight = (int) (dm.heightPixels * density + 0.5f); // 屏幕高(px,如:800px) int bwitch = 17; int txtsize = 20; if (density <= 1) { // 针对320x480特殊处理 if (densityDPI == 160 && screenWidth == 320 && screenHeight == 480) { bwitch = 11; txtsize = 13; } } Bitmap bm = Bitmap.createBitmap( UIUtil.dip2px(context, text.length() * bwitch), UIUtil.dip2px(context, 35), Config.ARGB_8888); float x = bm.getWidth(); float y = bm.getHeight(); // 建一个有制定对象的画布 Canvas c = new Canvas(bm); Paint p = new Paint(); // 主要用来消除边缘吧从效果上看 好像false的话有毛边 p.setAntiAlias(true); // p.setAlpha(0x000000);//透明 // c.drawCircle(x/2, y/2, x/2, p); p.setAlpha(0xfdfcfc);// 灰色 p.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_OVER)); // 下面是字体的相关设置 p.setTextSize(UIUtil.dip2px(context, txtsize)); String familyName = "宋体"; Typeface font = Typeface.create(familyName, Typeface.ITALIC); p.setTypeface(font); if (left) { p.setTextAlign(Paint.Align.LEFT); } else { p.setTextAlign(Paint.Align.RIGHT); } Paint.FontMetrics fm = p.getFontMetrics(); if (left) { c.drawText(text, 2, (y - fm.ascent) / 2 - 2, p); } else { c.drawText(text, x - 2, (y - fm.ascent) / 2 - 2, p); } Drawable drawable = new BitmapDrawable(bm); return drawable; } /** * 替换掉所有中文字符 * * @param inputString * @return String */ public static String trimChineseCharacter(String inputString) { if (null == inputString) { return ""; } else { String regex = "[\u4e00-\u9fa5]"; Pattern pattern = java.util.regex.Pattern.compile(regex); StringBuffer sb = new StringBuffer(); for (char c : inputString.toCharArray()) { Matcher matcher = pattern.matcher(String.valueOf(c)); if (!matcher.find()) { sb.append(c); } } return sb.toString(); } } /** * 启动功能,覆盖系统默认动画 * * @param parentActivity * @param intent */ // public static void startFunction(Activity parentActivity, Intent intent) // { // intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); // parentActivity.startActivity(intent); // parentActivity.overridePendingTransition(Animation.INFINITE, // R.anim.alpha); // } /** * 启动主界面 * * @param functionActivity * @param mainActivityClass */ // public static void startMain(Activity functionActivity, Class<?> // mainActivityClass) { // Intent intent = new Intent(); // intent.setClass(functionActivity,MainActivity.class); // intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); // functionActivity.startActivity(intent); // functionActivity.overridePendingTransition(R.anim.scale_down, // R.anim.alpha); // } /** * 启动主界面 * * @param functionActivity * @param intent */ // public static void startMain(Activity functionActivity, Intent intent) { // functionActivity.startActivity(intent); // functionActivity.overridePendingTransition(R.anim.scale_down, // R.anim.alpha); // } /** * 结束功能,跳转到Main * * @param functionActivity * @param intent */ // public static void finishFunction(Activity functionActivity) { // functionActivity.finish(); // functionActivity.overridePendingTransition(Animation.INFINITE, // R.anim.alpha); // } /** * 判断字符串首字符是否为字母 * * @param s * @return */ public static boolean isLetter(String s) { char c = s.charAt(0); return isLetter(c); } /** * 判断字符是否为字母 * * @param c * @return */ public static boolean isLetter(char c) { int i = (int) c; if ((i >= 65 && i <= 90) || (i >= 97 && i <= 122)) { return true; } else { return false; } } /** * 生成短名称 */ public static String generateShortTitle(String title) { if (TextUtils.isEmpty(title)) { return ""; } int maxcount = 7; if (title.length() <= maxcount) { return title; } else { return title.subSequence(0, 3) + ".." + title.substring(title.length() - 2); } } private static long lastClickTime = 0; /** * 防止按钮连续点击,按钮在500毫秒内不能同时起效 * * @return 调用方法 public void onClick(View v) { if * (UIUtil.isFastDoubleClick()) { return; } } */ public static boolean isFastDoubleClick() { long time = System.currentTimeMillis(); long timeD = time - lastClickTime; if (0 < timeD && timeD < 500) { return true; } lastClickTime = time; return false; } /** * 创建日期选择对话框 * * @param context * @param listenerCallBack * @return Dialog */ public static Dialog createDatePickerDialog(Context context, DatePickerDialog.OnDateSetListener listenerCallBack) { Calendar calendar = Calendar.getInstance(); Dialog dialog = new DatePickerDialog(context, listenerCallBack, calendar.get(Calendar.YEAR), // 传入年份 calendar.get(Calendar.MONTH), // 传入月份 calendar.get(Calendar.DAY_OF_MONTH) // 传入天数 ); return dialog; } /** * 创建日期选择对话框(显示的日期可设置),默认比当前时间晚7天 * * @param context * @param listenerCallBack * @return Dialog */ public static Dialog createDatePickerDialog(Context context, int month, int day, DatePickerDialog.OnDateSetListener listenerCallBack) { Calendar calendar = Calendar.getInstance(); Dialog dialog = new DatePickerDialog(context, listenerCallBack, calendar.get(Calendar.YEAR), // 传入年份 calendar.get(month), // 传入月份 calendar.get(day) + Constants.ENDDATE_MORE_THAN_STARTDATE // 传入天数 ); return dialog; } /** * 根据文件名(不用写扩展名),返回在R中的id * * @param imgName * @return int */ public static int getDrawableIdByName(String imgName) { if (imgName == null || imgName.trim().equals("")) { return R.drawable.icon_app_default; } Class draw = R.drawable.class; try { Field field = draw.getDeclaredField(imgName); return field.getInt(imgName); } catch (SecurityException e) { return R.drawable.icon_app_default; } catch (NoSuchFieldException e) { return R.drawable.icon_app_default; } catch (IllegalArgumentException e) { return R.drawable.icon_app_default; } catch (IllegalAccessException e) { return R.drawable.icon_app_default; } } /** * 生成tableLayout的行 * * @param table * @param conts内容数组 * [0]为左侧的标签文字,[1]为显示内容 * @see also appendNewRow() */ public static void generateTableRows(final Context context, TableLayout table, List<String[]> rlist) { if (null == table || null == rlist || rlist.size() == 0) { return; } int PADDING = UIUtil.dip2px(context, context.getResources() .getDimension(R.dimen.padding)); int MARGINMORE = UIUtil.dip2px(context, context.getResources() .getDimension(R.dimen.marginMore)); Drawable round_top = context.getResources().getDrawable( R.drawable.round_top); Drawable round_middle = context.getResources().getDrawable( R.drawable.round_middle); Drawable round_bottom = context.getResources().getDrawable( R.drawable.round_bottom); String[] strs = null; for (int i = 0; i < rlist.size(); i++) { strs = rlist.get(i); // 头 if (i == 0) { appendNewRow(context, table, strs[0], strs[1], PADDING, MARGINMORE, round_top); } // 中 else if (i < rlist.size() - 1) { appendNewRow(context, table, strs[0], strs[1], PADDING, MARGINMORE, round_middle); } // 尾 else { final String cont = strs[1]; appendNewRow(context, table, strs[0], cont, PADDING, MARGINMORE, round_bottom, new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(context, cont, Toast.LENGTH_LONG) .show(); } }); } } } /** * 生成新的一行 * * @param strLabel * @param strCont * @return TableRow */ public static void appendNewRow(final Context context, TableLayout table, String strLabel, final String strCont, int PADDING, int MARGINMORE, Drawable bg) { appendNewRow(context, table, strLabel, strCont, PADDING, MARGINMORE, bg, null); } public static void appendNewRow(Context context, TableLayout table, String strLabel, String strCont, int PADDING, int MARGINMORE, Drawable bg, android.view.View.OnClickListener listener) { TableRow row = new TableRow(context); row.setBackgroundDrawable(bg); row.setPadding(PADDING, PADDING, PADDING, PADDING); TextView tvLabel = new TextView(context); tvLabel.setText(strLabel); tvLabel.setPadding(0, 0, MARGINMORE, 0); tvLabel.setTextAppearance(context, R.style.labelLeft); TextView tvCont = new TextView(context); tvCont.setText(strCont); tvCont.setTextAppearance(context, R.style.inputWidgetRight); if (null != listener) { tvCont.setOnClickListener(listener); } row.addView(tvLabel); row.addView(tvCont); table.addView(row, Constants.MATCH_PARENT); } /** * 根据距离远近,给出友好的距离,如xx米,yy公里 * * @param distance * @return String */ public static String getFriendlyDistance(double distance) { String res = ""; if (distance > 1000) { res = UIUtil.getDecimalFormat().format(distance / 1000) + " 公里"; } else { res = UIUtil.getDecimalFormat().format(distance) + " 米"; } return res; } /** * 设置EditText是否可以编辑 * * @param editText * @param isEditable */ public static void setEditTextEditable(EditText editText, boolean isEditable) { if (isEditable) { editText.setFilters(new InputFilter[] { new InputFilter() { @Override public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) { return source.length() < 1 ? dest.subSequence(dstart, dend) : ""; } } }); } else { editText.setFilters(new InputFilter[] { new InputFilter() { @Override public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) { return null; } } }); } } public static String delHTMLTag(String htmlStr) { String regEx_script = "<script[^>]*?>[\\s\\S]*?<\\/script>"; // 定义script的正则表达式 String regEx_style = "<style[^>]*?>[\\s\\S]*?<\\/style>"; // 定义style的正则表达式 String regEx_html = "<[^>]+>"; // 定义HTML标签的正则表达式 Pattern p_script = Pattern.compile(regEx_script, Pattern.CASE_INSENSITIVE); Matcher m_script = p_script.matcher(htmlStr); htmlStr = m_script.replaceAll(""); // 过滤script标签 Pattern p_style = Pattern .compile(regEx_style, Pattern.CASE_INSENSITIVE); Matcher m_style = p_style.matcher(htmlStr); htmlStr = m_style.replaceAll(""); // 过滤style标签 Pattern p_html = Pattern.compile(regEx_html, Pattern.CASE_INSENSITIVE); Matcher m_html = p_html.matcher(htmlStr); htmlStr = m_html.replaceAll(""); // 过滤html标签 return htmlStr.trim(); // 返回文本字符串 } // 根据不同屏幕密度,控制自定义控件的样式 private static int getScreenDensity(Context context) { DisplayMetrics dm = new DisplayMetrics(); dm = context.getResources().getDisplayMetrics(); int densityDPI = dm.densityDpi; return densityDPI; } public static int getWidgetLayoutBottomHeightByDensity(Context context) { int density = getScreenDensity(context); int height = UIUtil.dip2px(context, context.getResources() .getDimension(R.dimen.bottomHeight240)); switch (density) { case 120: break; case 160: break; case 240: height = UIUtil.dip2px(context, context.getResources() .getDimension(R.dimen.bottomHeight240)); break; case 320: height = UIUtil.dip2px(context, context.getResources() .getDimension(R.dimen.bottomHeight320)); break; case 480: height = UIUtil.dip2px(context, context.getResources() .getDimension(R.dimen.bottomHeight480)); break; case 720: break; default: break; } return height; } public static int getScreenWidth(Context context){ DisplayMetrics metric = new DisplayMetrics(); ((Activity) context).getWindowManager().getDefaultDisplay().getMetrics(metric); int width = metric.widthPixels; return width; } }