/**============================================================
* 版权: 久其软件 版权所有 (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;
}
}
}