package com.partynetwork.iparty.app.common; import java.util.regex.Pattern; import com.partynetwork.dataprovider.util.ActionUtil; import com.partynetwork.iparty.app.AppContext; import com.partynetwork.iparty.app.ui.GuideActivity; import com.partynetwork.iparty.assistant.OrderInfoActivity; import com.partynetwork.iparty.contacts.ContactsListActivity; import com.partynetwork.iparty.flipmenu.Main; import com.partynetwork.iparty.imessage.ChatActivity; import com.partynetwork.iparty.imessage.MessageInfoActivity; import com.partynetwork.iparty.imessage.MessageSplashActivity; import com.partynetwork.iparty.iparty.CityIpartyActivity; import com.partynetwork.iparty.iparty.IpartyInfoActivity; import com.partynetwork.iparty.iparty.IpartyParticipantActivity; import com.partynetwork.iparty.login.Login; import com.partynetwork.iparty.login.Register4; import com.partynetwork.iparty.personal.PersonalActivity; import com.partynetwork.iparty.scanqr.CaptureResultActivity; import com.partynetwork.iparty.site.SiteUserInfoQRActivity; import com.partynetwork.myui.MyWebViewActivity; import com.zxing.activity.CaptureActivity; import eu.inmite.android.lib.dialogs.SimpleDialogFragment; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.graphics.Color; import android.net.Uri; import android.os.Handler; import android.os.Message; import android.support.v4.app.FragmentActivity; import android.text.Spannable; import android.text.SpannableString; import android.text.style.ForegroundColorSpan; import android.text.style.StyleSpan; import android.view.View; import android.widget.Toast; /** * 应用程序UI工具包:封装UI相关的一些操作 * * @author liux (http://my.oschina.net/liux) * @version 1.0 * @created 2012-3-21 */ public class UIHelper { public final static int APP_EXIT = 0x44; public final static int LISTVIEW_ACTION_INIT = 0x01; public final static int LISTVIEW_ACTION_REFRESH = 0x02; public final static int LISTVIEW_ACTION_SCROLL = 0x03; public final static int LISTVIEW_ACTION_CHANGE_CATALOG = 0x04; public final static int LISTVIEW_DATA_MORE = 0x01; public final static int LISTVIEW_DATA_LOADING = 0x02; public final static int LISTVIEW_DATA_FULL = 0x03; public final static int LISTVIEW_DATA_EMPTY = 0x04; public final static int LISTVIEW_DATATYPE_NEWS = 0x01; public final static int LISTVIEW_DATATYPE_BLOG = 0x02; public final static int LISTVIEW_DATATYPE_POST = 0x03; public final static int LISTVIEW_DATATYPE_TWEET = 0x04; public final static int LISTVIEW_DATATYPE_ACTIVE = 0x05; public final static int LISTVIEW_DATATYPE_MESSAGE = 0x06; public final static int LISTVIEW_DATATYPE_COMMENT = 0x07; public final static int REQUEST_CODE_FOR_RESULT = 0x01; public final static int REQUEST_CODE_FOR_REPLY = 0x02; /** 表情图片匹配 */ private static Pattern facePattern = Pattern .compile("\\[{1}([0-9]\\d*)\\]{1}"); /** 全局web样式 */ public final static String WEB_STYLE = "<style>* {font-size:16px;line-height:20px;} p {color:#333;} a {color:#3E62A6;} img {max-width:310px;} " + "img.alignleft {float:left;max-width:120px;margin:0 10px 5px 0;border:1px solid #ccc;background:#fff;padding:2px;} " + "pre {font-size:9pt;line-height:12pt;font-family:Courier New,Arial;border:1px solid #ddd;border-left:5px solid #6CE26C;background:#f6f6f6;padding:5px;} " + "a.tag {font-size:15px;text-decoration:none;background-color:#bbd6f3;border-bottom:2px solid #3E6D8E;border-right:2px solid #7F9FB6;color:#284a7b;margin:2px 2px 2px 0;padding:2px 4px;white-space:nowrap;}</style>"; /** * 调用系统安装了的应用分享 * * @param context * @param title * @param url */ public static void showShareMore(Activity context, final String title, final String url) { Intent intent = new Intent(Intent.ACTION_SEND); intent.setType("image/plain"); intent.putExtra(Intent.EXTRA_SUBJECT, "分享:" + title); intent.putExtra(Intent.EXTRA_TEXT, title + " " + url); context.startActivity(Intent.createChooser(intent, "选择分享")); } /** * 打开浏览器 * * @param context * @param url */ public static void openBrowser(Context context, String url) { try { Uri uri = Uri.parse(url); Intent it = new Intent(Intent.ACTION_VIEW, uri); context.startActivity(it); } catch (Exception e) { e.printStackTrace(); ToastMessage(context, "无法浏览此网页", 500); } } /** * 组合动态的回复文本 * * @param name * @param body * @return */ public static SpannableString parseActiveReply(String name, String body) { SpannableString sp = new SpannableString(name + ":" + body); // 设置用户名字体加粗、高亮 sp.setSpan(new StyleSpan(android.graphics.Typeface.BOLD), 0, name.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); sp.setSpan(new ForegroundColorSpan(Color.parseColor("#0e5986")), 0, name.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); return sp; } /** * 组合回复引用文本 * * @param name * @param body * @return */ public static SpannableString parseQuoteSpan(String name, String body) { SpannableString sp = new SpannableString("回复:" + name + "\n" + body); // 设置用户名字体加粗、高亮 sp.setSpan(new StyleSpan(android.graphics.Typeface.BOLD), 3, 3 + name.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); sp.setSpan(new ForegroundColorSpan(Color.parseColor("#0e5986")), 3, 3 + name.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); return sp; } /** * 弹出Toast消息 * * @param msg */ public static void ToastMessage(Context cont, String msg) { Toast.makeText(cont, msg, Toast.LENGTH_SHORT).show(); } public static void ToastMessage(Context cont, int msg) { Toast.makeText(cont, msg, Toast.LENGTH_SHORT).show(); } public static void ToastMessage(Context cont, String msg, int time) { Toast.makeText(cont, msg, time).show(); } /** * 点击返回监听事件 * * @param activity * @return */ public static View.OnClickListener finish(final Activity activity) { return new View.OnClickListener() { public void onClick(View v) { activity.finish(); } }; } /** * 提示是否退出系统对话框 * */ public static void Exit(final FragmentActivity activity) { SimpleDialogFragment .createBuilder(activity, activity.getSupportFragmentManager()) .setTitle("退出程序").setMessage("是否确认退出程序?") .setPositiveButtonText("取消").setNegativeButtonText("确定") .setRequestCode(APP_EXIT).setTag("custom-tag").show(); } /** * 清除app缓存 * * @param activity */ public static void clearAppCache(Activity activity) { final AppContext ac = (AppContext) activity.getApplication(); final Handler handler = new Handler() { public void handleMessage(Message msg) { if (msg.what == 1) { ToastMessage(ac, "缓存清除成功"); } else { ToastMessage(ac, "缓存清除失败"); } } }; new Thread() { public void run() { Message msg = new Message(); try { ac.clearAppCache(); msg.what = 1; } catch (Exception e) { e.printStackTrace(); msg.what = -1; } handler.sendMessage(msg); } }.start(); } /** * 跳到party详情页 * * @param context * @param partyId * iPartyId */ public static void showPartyInfo(Context context, int partyId) { Intent intent = new Intent(context, IpartyInfoActivity.class); intent.putExtra(IpartyInfoActivity.PARTY_ID, partyId); context.startActivity(intent); } /** * 跳到城市派对列表 * * @param mContext * @param type * @param cityNum */ public static void showParty4City(Context mContext, int type, String cityNum) { Intent intent = new Intent(mContext, CityIpartyActivity.class); intent.putExtra("ipartyType", type); intent.putExtra("cityNum", cityNum); mContext.startActivity(intent); } /** * 显示Party参加者列表 * * @param context * @param partyId */ public static void showPartyJoin(Context context, int partyId) { Intent intent = new Intent(context, IpartyParticipantActivity.class); intent.putExtra(IpartyParticipantActivity.PARTY_ID, partyId); context.startActivity(intent); } /** * 显示登录页面 * * @param activity */ public static void showLoginPage(Context context) { Intent intent = new Intent(context, Login.class); if (context instanceof Main) { intent.putExtra("LOGINTYPE", Login.LOGIN_MAIN); } else if (context instanceof Register4) { intent.putExtra("LOGINTYPE", Login.LOGIN_REGISTER); } else if (context instanceof GuideActivity) { intent.putExtra("LOGINTYPE", Login.LOGIN_GUI); } else { // intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); } context.startActivity(intent); } /** * 用户登录或注销 * * @param activity */ public static void loginOrLogout(Activity activity) { AppContext ac = (AppContext) activity.getApplication(); if (ac.isLogin()) { ac.Logout(); ToastMessage(activity, "已退出登录"); } else { showLoginPage(activity); } } /** * 跳到二维码扫描页面,并回调 * * @param acitvity */ public static void showCapturePage(Context context) { Intent intent = new Intent(context, CaptureActivity.class); context.startActivity(intent); } /** * 跳到扫描结果显示页面 * * @param context * @param resultStr */ public static void showCaptureResultPage(Context context, String resultStr) { Intent intent = new Intent(context, CaptureResultActivity.class); intent.putExtra(CaptureResultActivity.QR_RESULT, resultStr); context.startActivity(intent); } /** * 显示用户二维码页面 * * @param context */ public static void showUserQR(Context context) { Intent intent = new Intent(context, SiteUserInfoQRActivity.class); context.startActivity(intent); } /** * 跳到订单详情页 * * @param context * @param orderId * 订单Id */ public static void showOrderInfo(Context context, int orderId) { Intent intent = new Intent(context, OrderInfoActivity.class); intent.putExtra(OrderInfoActivity.ORDER_ID, orderId); context.startActivity(intent); } /** * 跳到个人中心 * * @param context * @param userId * 用户Id */ public static void showUserCenter(Context context, int userId) { Intent intent = new Intent(context, PersonalActivity.class); intent.putExtra(PersonalActivity.USER_ID, userId); context.startActivity(intent); } /** * 跳到webview * * @param context * @param title * 显示的标题 * @param url * 打开的网页Url */ public static void showWebPage(Context context, String title, String url) { Intent intent = new Intent(context, MyWebViewActivity.class); intent.putExtra(MyWebViewActivity.TITLE, title); intent.putExtra(MyWebViewActivity.URL, url); context.startActivity(intent); } /** * 显示聊天界面 * * @param context * @param to */ public static void showChat(Context context, String to) { Intent intent = new Intent(context, ChatActivity.class); intent.putExtra(ChatActivity.WITH_USER, to); context.startActivity(intent); } /** * 显示聊天选择页面 * * @param context * @param to */ public static void showChatSplash(Context context, int to) { Intent intent = new Intent(context, MessageSplashActivity.class); intent.putExtra("Uid", to); context.startActivity(intent); } /** * 显示通知界面 * * @param context * @param messageType */ public static void showNotice(Context context, int messageType) { Intent intent = new Intent(context, MessageInfoActivity.class); intent.putExtra(MessageInfoActivity.MESSAGE_TYPE, messageType); context.startActivity(intent); } /** * 显示人脉列表页面 * * @param context * @param userType */ public static void showContactsList(Context context, int userType) { Intent intent = new Intent(context, ContactsListActivity.class); intent.putExtra(ContactsListActivity.USER_TYPE, userType); context.startActivity(intent); } }