/**============================================================ * 版权: 久其软件 版权所有 (c) * 包: com.jiuqi.muchmore.clothing.common.tools * 修改记录: * 日期 作者 内容 * ============================================================= * 2012-6-8 Administrator * ============================================================*/ package com.jiuqi.njt.util; import java.lang.reflect.Field; import java.text.DecimalFormat; import java.text.NumberFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.LinkedHashSet; import java.util.List; import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern; import android.annotation.SuppressLint; import android.app.Activity; import android.app.AlertDialog; import android.app.DatePickerDialog; import android.app.Dialog; import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; import android.content.Context; import android.content.DialogInterface; import android.content.DialogInterface.OnClickListener; import android.content.Intent; import android.content.SharedPreferences; 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.util.Log; import android.util.TypedValue; import android.view.Gravity; import android.view.View; import android.view.ViewGroup.LayoutParams; import android.widget.EditText; import android.widget.LinearLayout; import android.widget.TableLayout; import android.widget.TableRow; import android.widget.TextView; import android.widget.Toast; import cn.jpush.android.api.JPushInterface; import com.amap.api.search.core.LatLonPoint; import com.jiuqi.mobile.nigo.comeclose.bean.base.AdminAreaBean; import com.jiuqi.mobile.nigo.comeclose.bean.base.RoleCode; import com.jiuqi.mobile.nigo.comeclose.bean.base.UserBean; import com.jiuqi.mobile.nigo.comeclose.bean.base.UserRolesBean; import com.jiuqi.mobile.nigo.comeclose.bean.base.UserType; import com.jiuqi.njt.R; import com.jiuqi.njt.data.MyApp; import com.jiuqi.njt.data.OptsharepreInterface; import com.jiuqi.njt.model.ModuleType; import com.jiuqi.njt.model.NxwAppVo; import com.jiuqi.njt.model.TableRawItem; import com.jiuqi.njt.ui.route.RouteNavActivity; import com.jiuqi.njt.widget.QueryContionActivity; import com.jiuqi.njt.widget.XzqhActivity; import com.jiuqi.njt.widget.XzqhActivityNew; /** * <p> * 界面上用的一些常用方法 * </p> * * <p> * Copyright: 版权所有 (c)<br> * Company: 久其 * </p> * * @author Administrator * @version 2012-6-8 */ @SuppressLint("ResourceAsColor") public class UIUtil { private static final String MyApp = null; 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 = new com.jiuqi.njt.widget.CustomerToast(context).makeText(context, R.drawable.warn_icon, msg, Toast.LENGTH_SHORT).show(); // 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); } /** * 尊敬的用户,正在为您接通农机通客服热线 400-611-9797 ,是否继续? * * 拨打电话,先弹出对话框 * * @param context * @param mobile */ @SuppressWarnings("unused") public static void tryToDial(final Context context, final String mobile) { if (TextUtils.isEmpty(mobile)) { UIUtil.showMsg(context, "电话号码内容为空"); } else { // if(TextUtils.isDigitsOnly(mobile)){ if (true) { 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()); Log.v(Constants.TAG, "打电话出错", e); } } }); builder.setNegativeButton("否", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { dialog.cancel(); } }); builder.create().show(); } else { UIUtil.showMsg(context, "号码格式不正确,应该为纯数字"); } } } /** * 尊敬的用户,正在为您接通农机通客服热线 400-611-9797 ,是否继续? * * 拨打电话,先弹出对话框 * * @param context * @param mobile */ public static void tryToDial(final Context context, final String mobile, String messageLeft, String messageRight) { if (TextUtils.isEmpty(mobile)) { UIUtil.showMsg(context, "电话号码内容为空"); } else { if (TextUtils.isDigitsOnly(mobile)) { AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setMessage(messageLeft + mobile + messageRight); 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()); Log.v(Constants.TAG, "打电话出错", e); } } }); 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) { // Log.v(UIUtil.LOG_TAG, "Do Exit MMC... PID: " + // android.os.Process.myPid()); 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); } /** * float 转dp * * @param context * @param floatValue * @return */ public static int floatToDP(Context context, float floatValue) { return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, floatValue, context.getResources().getDisplayMetrics()); } /** * float 转px(像素) * @param context * @param floatValue * @return */ public static int floatToPX(Context context, float floatValue) { return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_PX, floatValue, context.getResources().getDisplayMetrics()); } /** * float 转SP * @param context * @param floatValue * @return */ public static int floatToSP(Context context, float floatValue) { return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, floatValue, context.getResources().getDisplayMetrics()); } /** * 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; } /** * 得到周边查询中可查找的用户类别 * * @return UserType[] */ public static UserType[] getUserTypes() { ArrayList<UserType> l = new ArrayList<UserType>(); // l.add(UserType.Driver); // TODO 暂时把机主改成合作社 // l.add(UserType.DriverOwner); // l.add(UserType.Cooperative); // l.add(UserType.DriverSupplier); // l.add(UserType.DrivingSchool); // l.add(UserType.Intermediary); // l.add(UserType.Plant); l.add(UserType.Repair); l.add(UserType.Dealer); l.add(UserType.GasStation); // l.add(UserType.Supplier); // l.add(UserType.VillageCommittee); return l.toArray(new UserType[l.size()]); } /** * 得到周边查询中可查找的用户类别 * * @return UserType[] */ public static int getRoleCode(int roleCodeIndex) { List<RoleCode> allPoiSearchType = getPoiSearchRoleCodes(); return allPoiSearchType.get(roleCodeIndex).getCode(); } //*****添加搜索类别选项***** public static List<RoleCode> getPoiSearchRoleCodes() { List<RoleCode> allPoiSearchType = new ArrayList<RoleCode>(); // allPoiSearchType.add(RoleCode.Cooper); allPoiSearchType.add(RoleCode.Repair); allPoiSearchType.add(RoleCode.Dealer); allPoiSearchType.add(RoleCode.Gastation); allPoiSearchType.add(RoleCode.Driver); allPoiSearchType.add(RoleCode.UnknowRole); return allPoiSearchType; } public static ArrayList<String> getPoiSearchTypes() { List<RoleCode> allPoiSearchType = getPoiSearchRoleCodes(); ArrayList<String> allPoiSearchTypeString = new ArrayList<String>(); for (RoleCode roleCode : allPoiSearchType) { //银行字段未在枚举类中定义,此处判断第三个若等于未知角色则定义为银行 if(roleCode.getName()!="未知角色"){ allPoiSearchTypeString.add(roleCode.getName()); }else{ allPoiSearchTypeString.add("银行"); } } /** * 周边查询的时候不显示机手 */ allPoiSearchTypeString.remove(RoleCode.Driver.getName()); return allPoiSearchTypeString; } /** * 得到周边查询中可查找的用户类别的代码 * * @return Integer[] */ public static Integer[] getUserTypeCodes() { ArrayList<Integer> l = new ArrayList<Integer>(); for (UserType u : getUserTypes()) { l.add(u.getCode()); } return l.toArray(new Integer[l.size()]); } public static String[] getUserTypeNames() { ArrayList<String> l = new ArrayList<String>(); for (UserType u : getUserTypes()) { l.add(u.getName()); } return l.toArray(new String[l.size()]); } /** * 得到选取角色的用户类别 * * @return UserType[] */ public static UserType[] getAllUserTypes() { ArrayList<UserType> l = new ArrayList<UserType>(); l.add(UserType.Driver); // TODO 暂时把机主改成合作社 // l.add(UserType.DriverOwner); l.add(UserType.Cooperative); // 合作社暂不支持呀啊啊啊啊啊 l.add(UserType.DriverSupplier); l.add(UserType.DrivingSchool); l.add(UserType.GasStation); l.add(UserType.Intermediary); l.add(UserType.Plant); l.add(UserType.Repair); l.add(UserType.Dealer); l.add(UserType.Supplier); l.add(UserType.VillageCommittee); return l.toArray(new UserType[l.size()]); } /** * 得到用户角色 * * @return String[] */ public static String[] getUserRole() { ArrayList<String> l = new ArrayList<String>(); l.add("农机手"); // l.add("合作社"); // l.add("供销商"); // l.add("加油站"); // l.add("维修点"); // l.add("经销商"); // l.add("农机厂家"); // l.add("服务机构"); // l.add("组织机构"); // for (UserType u : getAllUserTypes()) { // l.add(u.getName()); // } return l.toArray(new String[l.size()]); } /** * 得到用户角色的RoleCode * * @return int */ public static int getUserRoleCode(int index) { // int[] allCodes = { 9, 4, 7, 10, 11, 12, 15, 1 }; int[] allCodes = { 9 }; return allCodes[index]; } /** * 请求行政区划,用下面代码处理返回结果 * * <pre> * * protected void onActivityResult(int requestCode, int resultCode, Intent data) { * if (requestCode == Constants.REQUEST_XZQH_CODE) { * if (resultCode == RESULT_OK) { * AdminAreaBean xzqh = (AdminAreaBean) data * .getSerializableExtra(Constants.PARAM_XZQH); * Log.v(Constants.TAG, xzqh.toString()); * // assign xzqh to a variable * this.xzqh = xzqh; * // btnProvince is your button * btnProvince.setText(xzqh.getFullName()); * } * } * } * </pre> * * @param activity * @param xzqh */ public static void requestXzqh(Activity activity, AdminAreaBean xzqh) { Intent it = new Intent(); it.setClass(activity, XzqhActivity.class); it.putExtra(Constants.PARAM_XZQH, xzqh); activity.startActivityForResult(it, Constants.REQUEST_XZQH_CODE); } /** * 请求行政区划(平铺展示) * * @param activity */ public static void requestNewXzqh(Activity activity) { Intent in = new Intent(); in.setClass(activity, XzqhActivityNew.class); in.putExtra(Constants.PARAM_PROVINCE, true); in.putExtra("DonotShowOther", true); activity.startActivityForResult(in, Constants.REQUEST_XZQH_CODE); } public static void requestXzqh(Activity activity, AdminAreaBean xzqh, int level) { Intent it = new Intent(); it.setClass(activity, XzqhActivity.class); it.putExtra(Constants.PARAM_PROVINCE, xzqh); it.putExtra(Constants.PARAM_LEVEL, level); activity.startActivityForResult(it, Constants.REQUEST_XZQH_CODE); } /** * 筛选条件 * * @param context * @param xzqh * 所在地 * @param moduleType * 筛选类型 */ public static void requestQuery(Activity context, AdminAreaBean xzqh, ModuleType moduleType) { Intent in = new Intent(); in.setClass(context, QueryContionActivity.class); in.putExtra(Constants.PARAM_XZQH, xzqh); in.putExtra("ModuleType", moduleType); context.startActivityForResult(in, Constants.REQUEST_XZQH_CODE); } /** * 请求导航 * * @param context * @param startPoiName * @param startPoint * @param endPoiName * @param endPoint */ public static void requestNav(Context context, String startPoiName, LatLonPoint startPoint, String endPoiName, LatLonPoint endPoint) { Intent intent = new Intent(); intent.setClass(context, RouteNavActivity.class); intent.putExtra(Constants.PARAM_STARTPOINT_NAME, startPoiName); intent.putExtra(Constants.PARAM_STARTPOINT, startPoint); intent.putExtra(Constants.PARAM_ENDPOINT_NAME, endPoiName); intent.putExtra(Constants.PARAM_ENDPOINT, endPoint); context.startActivity(intent); } /** * 请求导航 * * @param context * @param startPoint * 开始点 * @param endPoint * 结束点 */ public static void requestNav(Context context, LatLonPoint startPoint, LatLonPoint endPoint) { if (null != endPoint && endPoint.getLatitude() != 0 && endPoint.getLongitude() != 0) { UIUtil.requestNav(context, "lifei", startPoint, "zhaoyangguang", endPoint); } else { Toast.makeText(context, "没有位置信息,无法导航", Toast.LENGTH_SHORT).show(); } } public static void requestNavByAddress(Context context, LatLonPoint startPoint, String address) { UIUtil.requestNav(context, "", startPoint, address, null); } /** * 请求导航 * * @param context * @param endPoint * 结束点 */ public static void requestNav(Context context, LatLonPoint endPoint) { UIUtil.requestNav(context, null, endPoint); } /** * 请求导航 * * @param context */ public static void requestNav(Context context) { UIUtil.requestNav(context, null, null); } /** * 根据文件名(不用写扩展名),返回在R中的id * * @param imgName * @return int */ @SuppressWarnings("rawtypes") 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 appendNewRowWithDraw() */ public static void ctreatTableRowsWithDraw(final Context context, LinearLayout table, final List<TableRawItem> rawList) { if (null == table || null == rawList || rawList.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)); int PADDING = (int) (getScreenWidth(context) * 0.025); int TEXTSIZE = (int) (getScreenWidth(context) * 0.05); 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); TableRawItem rawItem; for (int i = 0; i < rawList.size(); i++) { rawItem = rawList.get(i); // 头 if (i == 0) { appendNewRowWithDraw(context, table, rawItem, PADDING, TEXTSIZE, round_top, null); } // 中 else if (i < rawList.size() - 1) { appendNewRowWithDraw(context, table, rawItem, PADDING, TEXTSIZE, round_middle, null); } // 尾 else { appendNewRowWithDraw(context, table, rawItem, PADDING, TEXTSIZE, round_bottom, new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText( context, rawList.get(rawList.size() - 1) .getStrContent(), Toast.LENGTH_LONG).show(); } }); } } } /** * 生成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); } public static void appendNewRowWithDraw(Context context, LinearLayout table, TableRawItem rawItem, int PADDING, int MARGINMORE, Drawable bg, android.view.View.OnClickListener listener) { LinearLayout row = new LinearLayout(context); // row.setPadding(PADDING, PADDING, PADDING , PADDING); // row.setGravity(Gravity.CENTER); LinearLayout.LayoutParams tvLabelParams = new LinearLayout.LayoutParams( (int) (getScreenWidth(context) * 0.28), LinearLayout.LayoutParams.WRAP_CONTENT); tvLabelParams.setMargins(PADDING, PADDING, 0, PADDING); tvLabelParams.gravity = Gravity.CENTER; LinearLayout.LayoutParams tvContParams = new LinearLayout.LayoutParams( (int) (getScreenWidth(context) * 0.5), LinearLayout.LayoutParams.WRAP_CONTENT); tvContParams.setMargins(0, PADDING, PADDING, PADDING); tvContParams.gravity = Gravity.CENTER; LinearLayout.LayoutParams leftButtonParams = new LinearLayout.LayoutParams( (int) (getScreenWidth(context) * 0.2), (int) (getScreenWidth(context) * 0.08), 1); // LinearLayout.LayoutParams leftButtonParams = new // LinearLayout.LayoutParams( // LinearLayout.LayoutParams.WRAP_CONTENT, // LinearLayout.LayoutParams.WRAP_CONTENT, 1); leftButtonParams.setMargins(0, 0, PADDING, 0); leftButtonParams.gravity = Gravity.CENTER; TextView tvLabel = new TextView(context); tvLabel.setText(null == rawItem.getStrLable() ? "" : rawItem .getStrLable()); tvLabel.setTextColor(R.color.black); tvLabel.setLayoutParams(tvLabelParams); TextView tvCont = new TextView(context); String str = rawItem.getStrContent(); tvCont.setText(null == str ? "" : str); // tvCont.setTextColor(R.color.gray); // tvCont.setTextAppearance(context, R.style.inputWidgetRight); tvCont.setLayoutParams(tvContParams); if (null != listener) { tvCont.setOnClickListener(listener); } tvLabel.setTextSize(android.util.TypedValue.COMPLEX_UNIT_PX, MARGINMORE); tvCont.setTextSize(android.util.TypedValue.COMPLEX_UNIT_PX, MARGINMORE); row.addView(tvLabel); row.addView(tvCont); if (rawItem.isHaveLeftDrawable()) { // TextView linView = new TextView(context); // linView.setLayoutParams(new // LayoutParams(2,LayoutParams.MATCH_PARENT)); // linView.setPadding(15, 0, 5, 0); // linView.setBackgroundResource(R.drawable.poi_devider); // row.addView(linView); TextView leftButton = new TextView(context); leftButton.setBackgroundResource(rawItem.getLeftDrawable()); if (null != rawItem.getOnLeftClickListener()) { leftButton.setOnClickListener(rawItem.getOnLeftClickListener()); } leftButton.setLayoutParams(leftButtonParams); row.addView(leftButton); } else { TextView leftButton = new TextView(context); leftButton.setBackgroundResource(R.drawable.poi_shoucang_new); leftButton.setLayoutParams(leftButtonParams); leftButton.setVisibility(View.INVISIBLE); row.addView(leftButton); } LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); // row.setLayoutParams(layoutParams); row.setBackgroundDrawable(bg); table.addView(row); } public static void appendNewRowWithDraw(Context context, TableLayout table, TableRawItem rawItem, int PADDING, int MARGINMORE, Drawable bg, android.view.View.OnClickListener listener, boolean flag) { TableRow row = new TableRow(context); row.setBackgroundDrawable(bg); row.setPadding(PADDING, PADDING, PADDING, PADDING); row.setGravity(Gravity.CENTER); TableLayout.LayoutParams tvLabelParams = new TableLayout.LayoutParams( (int) (getScreenWidth(context) * 0.25), TableLayout.LayoutParams.MATCH_PARENT); LayoutParams tvContParams = new LayoutParams( (int) (getScreenWidth(context) * 0.55), LayoutParams.WRAP_CONTENT); LayoutParams leftButtonParams = new LayoutParams( (int) (getScreenWidth(context) * 0.15), LayoutParams.WRAP_CONTENT); TextView tvLabel = new TextView(context); // tvLabelParams.setMargins(PADDING, PADDING, PADDING, PADDING); tvLabel.setTextAppearance(context, R.style.labelLeftNew); tvLabel.setMinEms(4); tvLabel.setText(rawItem.getStrLable()); // tvLabel.setLayoutParams(tvLabelParams); TextView tvCont = new TextView(context); tvLabel.setPadding(0, 0, MARGINMORE, 0); tvLabel.setTextAppearance(context, R.style.labelLeftNew); tvCont.setEms(11); tvCont.setMaxEms(11); // tvCont.setLayoutParams(tvContParams); switch (rawItem.getStrLable().length()) { case 0: tvLabel.setPadding(0, 0, MARGINMORE, 0); tvLabel.setTextAppearance(context, R.style.labelLeftNew); tvCont.setEms(11); break; case 1: tvLabel.setPadding(0, 0, MARGINMORE, 0); tvLabel.setTextAppearance(context, R.style.labelLeftNew); if (flag) { tvCont.setEms(10); } else { tvCont.setEms(11); } break; case 2: tvLabel.setPadding(0, 0, MARGINMORE, 0); tvLabel.setTextAppearance(context, R.style.labelLeftNew); if (flag) { tvCont.setEms(10); } else { tvCont.setEms(11); } break; case 3: tvLabel.setPadding(0, 0, MARGINMORE, 0); tvLabel.setTextAppearance(context, R.style.labelLeftNew); if (flag) { tvCont.setEms(10); } else { tvCont.setEms(11); } break; case 4: tvLabel.setPadding(0, 0, MARGINMORE, 0); tvLabel.setTextAppearance(context, R.style.labelLeftNew); tvCont.setEms(10); break; case 5: tvLabel.setPadding(0, 0, MARGINMORE, 0); tvLabel.setTextAppearance(context, R.style.labelLeftNew); tvCont.setEms(10); break; default: tvLabel.setPadding(0, 0, 0, 0); tvLabel.setTextAppearance(context, R.style.labelLeftNewSmall); tvCont.setEms(10); break; } String str = rawItem.getStrContent(); tvCont.setText(str); tvCont.setTextAppearance(context, R.style.inputWidgetRight); if (null != listener) { tvCont.setOnClickListener(listener); } row.addView(tvLabel); row.addView(tvCont); if (rawItem.isHaveLeftDrawable()) { // TextView linView = new TextView(context); // linView.setLayoutParams(new // LayoutParams(2,LayoutParams.MATCH_PARENT)); // linView.setPadding(15, 0, 5, 0); // linView.setBackgroundResource(R.drawable.poi_devider); // row.addView(linView); TextView leftButton = new TextView(context); leftButton.setBackgroundResource(rawItem.getLeftDrawable()); leftButton.setTextAppearance(context, R.style.tableRawDraw); leftButton.setGravity(Gravity.CENTER); leftButton.setOnClickListener(rawItem.getOnLeftClickListener()); // leftButton.setLayoutParams(leftButtonParams); row.addView(leftButton); } else { TextView leftButton = new TextView(context); leftButton.setBackgroundResource(R.drawable.poi_shoucang_new); leftButton.setTextAppearance(context, R.style.tableRawDraw); leftButton.setGravity(Gravity.CENTER); // leftButton.setLayoutParams(leftButtonParams); leftButton.setVisibility(View.INVISIBLE); row.addView(leftButton); } table.addView(row, Constants.MATCH_PARENT); } /** * 得到农机通的NxwAppVo对象,用于更新软件 * * @param context * @return NxwAppVo */ public static NxwAppVo getNjtVo(Context context) { NxwAppVo njt = new NxwAppVo(); njt.setActivity(com.jiuqi.njt.update.Config.PACKAGE_NAME + ".ui.SplashActivity"); njt.setFileName(com.jiuqi.njt.update.Config.UPDATE_SAVENAME); Drawable drawable = context.getResources().getDrawable( UIUtil.getDrawableIdByName("ic_launcher")); njt.setIco(drawable); njt.setName(context.getString(R.string.appName)); njt.setPackageName(com.jiuqi.njt.update.Config.PACKAGE_NAME); njt.setUrl(com.jiuqi.njt.update.Config.UPDATE_SERVER + com.jiuqi.njt.update.Config.UPDATE_APKNAME); return njt; } /** * 根据距离远近,给出友好的距离,如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(); // 返回文本字符串 } /** * 跳转页面 * * @param parentActivity * @param intent */ public static void startActivity(Activity parentActivity, Intent intent) { intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); parentActivity.startActivity(intent); // 实现渐变效果 parentActivity.overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out); } // 根据不同屏幕密度,控制自定义控件的样式 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 void sendNotification(Context context, String title, String msg, Intent intent) { SharedPreferences voice = context.getSharedPreferences( Constants.SOFTSET_SHEAREFILENAME, 0); String isWeatherPush = voice.getString("isWeatherPush", "yes"); if (null != intent.getStringExtra("flag")) {//有问题Key flag expected String but value was a java.lang.Boolean. The default value <null> was returned. String isReceiverJobPush = voice.getString("isReceiverJobPush", "yes"); if ("yes".equals(isReceiverJobPush)) { NotificationManager nm = (NotificationManager) context .getSystemService(Context.NOTIFICATION_SERVICE); Notification n = new Notification(R.drawable.ic_launcher_new, title, System.currentTimeMillis()); n.flags = Notification.FLAG_AUTO_CANCEL; PendingIntent pi = PendingIntent.getActivity(context, (int) System.currentTimeMillis(), intent, PendingIntent.FLAG_UPDATE_CURRENT); n.setLatestEventInfo(context, title, msg, pi); n.defaults = Notification.DEFAULT_SOUND; nm.notify(getRandomSendNo(), n); } } else if ("yes".equals(isWeatherPush)) { NotificationManager nm = (NotificationManager) context .getSystemService(Context.NOTIFICATION_SERVICE); Notification n = new Notification(R.drawable.ic_launcher_new, title, System.currentTimeMillis()); n.flags = Notification.FLAG_AUTO_CANCEL; PendingIntent pi = PendingIntent.getActivity(context, (int) System.currentTimeMillis(), intent, PendingIntent.FLAG_UPDATE_CURRENT); n.setLatestEventInfo(context, title, msg, pi); n.defaults = Notification.DEFAULT_SOUND; nm.notify(getRandomSendNo(), n); } } public static int getScreenWidth(Context context) { DisplayMetrics metric = new DisplayMetrics(); ((Activity) context).getWindowManager().getDefaultDisplay() .getMetrics(metric); int width = metric.widthPixels; return width; } public static int getScreenHeight(Context context) { DisplayMetrics metric = new DisplayMetrics(); ((Activity) context).getWindowManager().getDefaultDisplay() .getMetrics(metric); int heigh = metric.heightPixels; return heigh; } public static final int MAX = Integer.MAX_VALUE; public static final int MIN = MAX / 2; public static int getRandomSendNo() { return (int) (MIN + Math.random() * (MAX - MIN)); } /** * 设置推送的标签 * * @param context * @param bean */ public static void setPushMsgTags(Context context) { MyApp application = (MyApp) context.getApplicationContext(); UserBean bean = application.getClientContext().getUser(); Set<String> tags = new LinkedHashSet<String>(); tags.add("0"); tags.add(String.valueOf(bean.getAdminArea().getProvinceCode())); tags.add(String.valueOf(bean.getAdminArea().getProvinceCode()) + String.valueOf(bean.getAdminArea().getCityCode())); tags.add(String.valueOf(bean.getAdminArea().getProvinceCode()) + String.valueOf(bean.getAdminArea().getCityCode()) + String.valueOf(bean.getAdminArea().getCountryCode())); tags.add(bean.getMobileNumber().replaceAll("-", "")); List<UserRolesBean> UserRolesBeans = bean.getUserRolesBeans(); for (UserRolesBean userRolesBean : UserRolesBeans) { tags.add(String.valueOf(userRolesBean.getRoleBean().getCode())); } // tags.add("0"); // tags.add(sharePre.getPres("provinceCode")); // tags.add(sharePre.getPres("provinceCode") // + sharePre.getPres("cityCode")); // tags.add(sharePre.getPres("provinceCode") // + sharePre.getPres("cityCode") // + sharePre.getPres("countryCode")); // tags.add(sharePre.getPres("mobileNumber")); // tags.add(sharePre.getPres("role")); Log.e("-----------", tags.toString()); //[0, 41, 411, 4115, 0371-65350521, 21] //[0, 41, 411, 4115, 18638518819, 4] //[0, 13, 130, 1300, 18633866096, 1] JPushInterface.setAlias(context, bean.getMobileNumber().replaceAll("-", ""), null);//设置别名 JPushInterface.setTags(context, tags, null);//设置标签 } public static String getPhonenumber(String phone) { if (null != phone && phone.length() > 6) { phone = phone.substring(0, 3) + "****" + phone.substring(6, phone.length()); } return phone; } public static String convertModuleTypeToString(ModuleType moduleType) { String title = ""; switch (moduleType) { case zczx: title = "政策资讯"; break; case zyzn: title = "作业指南"; break; case fwwd: title = "服务网点"; break; case zbcx: title = "周边查询"; break; case njcx: title = "农机查询"; break; case gxcx: title = "供需查询"; break; case ksdh: title = "快速导航"; break; case xxcj: title = "信息采集"; break; case sjtb: title = "数据填报"; break; case wzcx: title = "位置查询"; break; case gjhf: title = "轨迹回放"; break; case yggl: title = "yggl"; break; case njdd: title = "农机调度"; break; case xsgl: title = "销售管理"; break; case wdgl: title = "网点管理"; break; case btyl: title = "补贴一览"; break; case njzt: title = "农机展台"; break; case khzx: title = "客服专线"; break; case zxzx: title = "最新资讯"; break; case ggtz: title = "公告通知"; break; case zcfg: title = "政策法规"; break; case njbt: title = "农机补贴"; break; case wxby: title = "维修保养"; break; case gddt: title = "各地动态"; break; case csdt: title = "厂商动态"; break; case ymzn: title = "玉米作业指南"; break; case xmzn: title = "小麦作业指南"; break; case sdzn: title = "水稻作业指南"; break; case jstg: title = "技术推广"; break; case zlts: title = "质量投诉"; break; case aqjl: title = "安全监理"; break; case pxjg: title = "培训机构"; break; case syjd: title = "试验鉴定"; break; case njjx: title = "农机驾校"; break; case wxjg: title = "维修机构"; break; case jyz: title = "加油站"; break; case wxd: title = "维修点"; break; case jxs: title = "经销商"; break; case hzs: title = "合作社"; break; case njj: title = "农机局"; break; case zbjs: title = "周边机手"; break; case zbjz: title = "周边机主"; break; case zbhzs: title = "周边合作社"; break; case zbjyz: title = "周边加油站"; break; case zbjxs: title = "周边经销商"; break; case zbyh: title = "周边银行"; break; case zbwxd: title = "周边维修点"; break; case zbnjj: title = "周边农机局"; break; case jbxx: title = "机播信息"; break; case jsxx: title = "机收信息"; break; case jgxx: title = "机耕信息"; break; case nyjnj: title = "拟引进农机"; break; case npcnj: title = "拟派出农机"; break; case gyxx: title = "供应信息"; break; case qxxx: title = "求需信息"; break; case dtdh: title = "地图导航"; break; case cygj: title = "常用工具"; break; case sjkz: title = "手机酷站"; break; case njhw: title = "农机化网"; break; case hzscj: title = "合作社采集"; break; case jyzcj: title = "加油站采集"; break; case wxdcj: title = "维修点采集"; break; case cg: title = "春耕"; break; case sx: title = "三夏"; break; case sq: title = "双枪"; break; case sqiu: title = "三秋"; break; case qn: title = "全年"; break; case kq: title = "跨区"; break; case xxcx: title = "信息查询"; break; case zycx: title = "作业面积查询"; break; case xxfb: title = "信息发布"; break; case zyfb: title = "作业面积发布"; break; case njfb: title = "农机信息发布"; break; case gxfb: title = "供需信息发布"; break; case jbxxfb: title = "机播信息发布"; break; case jsxxfb: title = "机收信息发布"; break; case jgxxfb: title = "机耕信息发布"; break; case nyjxxfb: title = "拟引进信息发布"; break; case npcxxfb: title = "拟派出信息发布"; break; case gyxxfb: title = "供应信息发布"; break; case qxxxfb: title = "求需信息发布"; break; case fwjg: title = "服务机构"; break; case bxgl: title = "报修管理"; break; case wxgl: title = "维修管理"; break; case ssxx: title = "深松信息"; break; case ssfb: title = "深松信息发布"; break; case jghtxxfb: title = "秸秆还田信息发布"; break; case jghtxxcx: title = "秸秆还田信息查询"; break; case khxxcx: title = "抗旱信息查询"; break; case khxxfb: title = "抗旱信息发布"; break; case zbxxcx: title = "植保信息查询"; break; case zbxxfb: title = "植保信息发布"; break; default: break; } return title; } /** * 将传过来的数字转换成DIP * * @param context * @param number * 转换的值 * @return */ public static int converNumberToDIP(Context context, int number) { return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, number, context.getResources().getDisplayMetrics()); } /** * 检查电话输入是否正确 * 正确格式 012-87654321、0123-87654321、0123-7654321 * @param value * @return */ public boolean checkTel(String value) { return value.matches("\\d{4}-\\d{8}|\\d{4}-\\d{7}|\\d(3)-\\d(8)"); } /** * 检查手机输入是否正确 * * @param value * @return */ public boolean checkMobile(String value) { return value.matches("^[1][3,5]+\\d{9}"); } /** * 手机号码验证,11位,不知道详细的手机号码段,只是验证开头必须是1和位数 * */ private boolean checkCellPhone(String cellPhoneNr) { String reg="^[1][\\d]{10}"; return startCheck(reg,cellPhoneNr); } /** * 验证国内电话号码 * 格式:010-67676767,区号长度3-4位,必须以"0"开头,号码是7-8位 * */ public static boolean checkPhoneNr(String phoneNr) { String regex="^[0]\\d{2,3}\\-\\d{7,8}"; return startCheck(regex,phoneNr); } /** * 验证国内电话号码 * 格式:6767676, 号码位数必须是7-8位,头一位不能是"0" * */ public static boolean checkPhoneNrWithoutCode(String phoneNr) { String reg="^[1-9]\\d{6,7}"; return startCheck(reg,phoneNr); } /** * 验证国内电话号码 * 格式:0106767676,共11位或者12位,必须是0开头 * */ public static boolean checkPhoneNrWithoutLine(String phoneNr) { String reg="^[0]\\d{10,11}"; return startCheck(reg,phoneNr); } public static boolean startCheck(String reg,String string) { boolean tem=false; Pattern pattern = Pattern.compile(reg); Matcher matcher=pattern.matcher(string); tem=matcher.matches(); return tem; } /** * 手机号验证 * * @param str * @return 验证通过返回true */ public static boolean isMobile(String str) { Pattern p = null; Matcher m = null; boolean b = false; p = Pattern.compile("^[1][3,4,5,8][0-9]{9}$"); // 验证手机号 m = p.matcher(str); b = m.matches(); return b; } /** * 电话号码验证 * * @param str * @return 验证通过返回true */ public static boolean isPhone(String str) { Pattern p1 = null,p2 = null; Matcher m = null; boolean b = false; p1 = Pattern.compile("^[0][1-9]{2,3}-[0-9]{5,10}$"); // 验证带区号的 p2 = Pattern.compile("^[1-9]{1}[0-9]{5,8}$"); // 验证没有区号的 if(str.length() >9) { m = p1.matcher(str); b = m.matches(); }else{ m = p2.matcher(str); b = m.matches(); } return b; } public static boolean isCheckPhone(String NumStr) { if(isMobile(NumStr)){//手机号 return true; } else if(checkPhoneNr(NumStr)) {//固话格式:010-67676767,区号长度3-4位,必须以"0"开头,号码是7-8位 return true; } else if(checkPhoneNrWithoutCode(NumStr)) {//固话格式:6767676, 号码位数必须是7-8位,头一位不能是"0" return true; } else if(checkPhoneNrWithoutLine(NumStr)) {//固话 格式:0106767676,共11位或者12位,必须是0开头 return true; } else { return false; } } }