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