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