/**============================================================ * 版权: 久其软件 版权所有 (c) * 包: com.jiuqi.muchmore.clothing.common.tools * 修改记录: * 日期 作者 内容 * ============================================================= * 2012-6-8 Administrator * ============================================================*/ package com.jqyd.utils; import java.io.IOException; import java.io.InputStream; import java.lang.reflect.Field; import java.net.MalformedURLException; import java.net.URL; import java.text.DecimalFormat; import java.util.List; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.FactoryConfigurationError; import javax.xml.parsers.ParserConfigurationException; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; import org.xml.sax.SAXException; import com.example.camera.R; import com.jqyd.camera.library.CameraMainActivity; import android.app.Activity; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.content.DialogInterface.OnClickListener; import android.content.Intent; import android.net.Uri; import android.telephony.SmsManager; import android.util.DisplayMetrics; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Toast; /** * <p> * 界面上用的一些常用方法 * </p> * * <p> * Copyright: 版权所有 (c)<br> * Company: 久其 * </p> * * @author Administrator * @version 2012-6-8 */ public class UIUtil{ public static class ConfigTag { public static final String BS = "bs"; public static final String VersionType = "VersionType"; public static final String ServicePhone = "Service-Phone"; } /** * 浮点数格式 */ public static DecimalFormat doubleFormat = new DecimalFormat("#0.00"); /** * 浮点数格式(千分位) */ public static DecimalFormat doubleFormatThousands = new DecimalFormat("###,##0.00"); /** * 正整数格式 */ public static DecimalFormat intFormat = new DecimalFormat("0"); /** * ¥ */ public static final String RMB = "¥"; /** * 测试用的日志标签 */ public static final String LOG_TAG = "mmc"; /** * 帐号发生重复登录的代码 */ public static final int Session_Repeat = -6; // public static void catchExcutefailedException(Context context, ExcutefailedException e){ // String errorMessage = getErrorMessage(e); // showMsg(context, errorMessage); // boolean needRelogin = e.getErrorCode() == ExcutefailedException.Session_Failed || e.getErrorCode() == Session_Repeat; // if(needRelogin){ // redirectLoginPage((Activity)context); // } // } /** * 显示文字 * * @param context * @param msg */ public static void showMsg(Context context, String msg){ Toast m = Toast.makeText(context, msg, Toast.LENGTH_SHORT); // m.setGravity(Gravity.CENTER_HORIZONTAL|Gravity.CENTER_VERTICAL, 0, 0); m.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(Intent.ACTION_CALL, Uri.parse("tel:" + mobile)); /* 在startActivity()方法中带入自定义的Intent对象以执行拨打电话的工作 */ context.startActivity(myIntentDial); } /** * 调用系统发短信接口 * @param context * @param mobile */ public static void sendSMS(Context context, String mobile){ /* 建构一个新的Intent并执行ACTION_SENDTO的常数与透过Uri将字符串带入 */ Intent myIntentSMS = new Intent(Intent.ACTION_SENDTO, Uri.parse("smsto:" + mobile)); /* 在startActivity()方法中带入自定义的Intent对象以执行拨打电话的工作 */ context.startActivity(myIntentSMS); } /** * 发短信 * * @param context * @param phonenumber * @param msg */ public static void sendSMS(Context context,String phonenumber,String msg){ SmsManager sms = SmsManager.getDefault(); List<String> divideContents = sms.divideMessage(msg); for (String text : divideContents) { sms.sendTextMessage(phonenumber, null, text, null, null);// 发送信息到指定号码 } } /** * 获得业务服务器访问地址 * * @param context * @return URL */ public static URL getBsUrl(Context context){ String url = getConfigByName(context, ConfigTag.BS); try { return new URL(url); } catch (MalformedURLException e) { throw new IllegalArgumentException("配置文件格式错误:"+url); } } /** * 获得客户端版本 * * @param context * @return URL */ private static String getVersionType(Context context){ String vt = getConfigByName(context, ConfigTag.VersionType); return vt; } /** * 通过标签名称读取配置文件值 * @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 MoveView initisHomeFrameContentView(Activity activity, int id){ // return initHomeFrameContentView(activity,id,1); // } /** * 设置框架内部具体内容 * 有侧边栏,标题居左 * @param activity * @param R.Layout.id * @return */ // public static MoveView initisHomeFrameContentView2(Activity activity, int id){ // return initHomeFrameContentView(activity,id,2); // } /** * 设置框架内部具体内容 * 有页边距,标题居左 * @param activity * @param R.Layout.id * @return */ public static View initFrameContentView(Activity activity, int id){ return initFrameContentView(activity,id,2); } /** * 设置框架内部具体内容 * 无页边距,标题居左 * @param activity * @param R.Layout.id * @return */ public static View initFrameContentView2(Activity activity, int id){ return initFrameContentView(activity,id,3); } /** * 设置框架内部具体内容 * 有页边距 ,标题居中 * @param activity * @param R.Layout.id * @return */ public static View initFrameContentView3(Activity activity, int id){ return initFrameContentView(activity,id,1); } /** * 设置框架内部具体内容,无侧边菜单 * @param activity * @param id * @param isHome true则为主页 * @return View */ public static View initFrameContentView(Activity activity, int id, int type){ //设置主窗口视图 LayoutInflater inflater = LayoutInflater.from(activity); View mainFrame=inflater.inflate(R.layout.inc_framelayout1, null); if(type==2){ mainFrame=inflater.inflate(R.layout.inc_framelayout2, null); }else if(type==3){ mainFrame=inflater.inflate(R.layout.inc_framelayout3, null); } //设置界面显示移动视图 activity.setContentView(mainFrame); ViewGroup view = (ViewGroup)mainFrame.findViewById(R.id.rlFrameMiddle); 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("取消", 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(); } public static void alertMsg(Context context, String message){ AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setMessage(message); builder.setPositiveButton("确定", new DialogInterface.OnClickListener(){ public void onClick(DialogInterface dialog, int which){ dialog.cancel(); } }); builder.create().show(); } /** * 显示退出对话框 * @param context */ // public static void showExitSystemDialog(final Activity context){ // AlertDialog.Builder builder = new AlertDialog.Builder(context); // builder.setMessage("您确定要退出吗? "); // builder.setPositiveButton("确定", new DialogInterface.OnClickListener(){ // public void onClick(DialogInterface dialog, int which){ // UIUtil.redirectLoginPage(context); // } // }); // builder.setNegativeButton("取消", 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; } } /** * 设置控件可用状态 * * @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(){ public void onClick(DialogInterface dialog, int which){ if(r != null){ r.run(); } } }); } /** * DIP转PX * @param context * @param dipValue * @return int */ public static int dip2px(Context context, float dipValue){ final float scale = context.getResources().getDisplayMetrics().density; return (int)(dipValue * scale + 0.5f); } /** * PX转DIP * @param context * @param pxValue * @return int */ public static int px2dip(Context context, float pxValue){ final float scale = context.getResources().getDisplayMetrics().density; return (int)(pxValue / scale + 0.5f); } /** * 返回屏幕宽度 * @param context * @return */ public static int getWindowWidth(Context context){ DisplayMetrics dm = new android.util.DisplayMetrics(); ((Activity)context).getWindowManager().getDefaultDisplay().getMetrics(dm); return dm.widthPixels; } /** * 返回屏幕高度 * @param context * @return */ public static int getWindowHeight(Context context){ DisplayMetrics dm = new android.util.DisplayMetrics(); ((Activity)context).getWindowManager().getDefaultDisplay().getMetrics(dm); return dm.heightPixels; } /** * 返回到登录页 * * @param context */ // public static void redirectLoginPage(Activity context){ // Intent intent = new Intent(); // intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); // intent.setClass(context, LoginActivity.class); // intent.putExtra("exit", true); // context.startActivity(intent); // //缩放效果 // context.overridePendingTransition(R.anim.zoomin,R.anim.zoomout); // } /** * 启动功能,实现下一个页面由右向左移动出现,覆盖系统默认动画 * @param parentActivity * @param intent */ public static void startFunction(Activity parentActivity, Intent intent) { intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); parentActivity.startActivity(intent); //实现左移动画效果 //parentActivity.overridePendingTransition(R.anim.in_from_right, R.anim.out_to_left); } /** * 跳转页面 * @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); } /** * 启动主界面 * @param functionActivity * @param mainActivityClass */ public static void startMain(Activity functionActivity) { Intent intent = new Intent(); intent.setClass(functionActivity,CameraMainActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); functionActivity.startActivity(intent); int version = Integer.valueOf(android.os.Build.VERSION.SDK); if(version >= 5) { //实现放大动画效果 functionActivity.overridePendingTransition(R.anim.enlargein, R.anim.enlargeout); } } /** * 结束功能,调转到固定界面 * @param parentActivity * @param intent */ public static void finishFunction(Activity parentActivity, Intent intent) { parentActivity.startActivity(intent); finishFunction(parentActivity); } /** * 结束功能,返回上一界面 * @param functionActivity * @param intent */ public static void finishFunction(Activity functionActivity) { functionActivity.finish(); //实现右移动画效果 //functionActivity.overridePendingTransition(R.anim.in_from_left, R.anim.out_to_right); //functionActivity.overridePendingTransition(Animation.INFINITE, R.anim.alpha); } /** * 返回当前客户端是否为矫正客户端 * @param context * @return */ // public static boolean isCorrectClient(Context context){ // boolean res=false; //// if(UIUtil.getConfigByName(context, "VersionType").equalsIgnoreCase(context.getString(R.string.CorrectPerson))){ //// res =true; //// } // if(LoginManager.getInstance().getLoginUser().getRole()==UserDTO.RoleType.CorrectPerson.getCode()){ // res =true; // } // return res; // } }