/** * */ package net.coding.program.maopao.share; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.graphics.drawable.ColorDrawable; import android.os.Parcel; import android.os.Parcelable; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.view.ViewGroup.LayoutParams; import android.view.animation.AnimationUtils; import android.widget.PopupWindow; import android.widget.Toast; import com.umeng.analytics.MobclickAgent; import com.umeng.socialize.bean.SHARE_MEDIA; import com.umeng.socialize.bean.SocializeEntity; import com.umeng.socialize.controller.UMEvernoteHandler; import com.umeng.socialize.controller.UMServiceFactory; import com.umeng.socialize.controller.UMSocialService; import com.umeng.socialize.controller.listener.SocializeListeners; import com.umeng.socialize.media.QZoneShareContent; import com.umeng.socialize.media.SinaShareContent; import com.umeng.socialize.media.UMImage; import com.umeng.socialize.sso.QZoneSsoHandler; import com.umeng.socialize.sso.SinaSsoHandler; import com.umeng.socialize.sso.UMQQSsoHandler; import com.umeng.socialize.utils.OauthHelper; import com.umeng.socialize.weixin.controller.UMWXHandler; import net.coding.program.AllThirdKeys; import net.coding.program.MainActivity_; import net.coding.program.MyApp; import net.coding.program.R; import net.coding.program.common.Global; import net.coding.program.common.HtmlContent; import net.coding.program.common.umeng.UmengEvent; import net.coding.program.common.widget.IconTextView; import net.coding.program.model.Maopao; import net.coding.program.user.UsersListActivity; import net.coding.program.user.UsersListActivity_; public class CustomShareBoard extends PopupWindow implements OnClickListener { private static UMSocialService mController = UMServiceFactory.getUMSocialService("net.coding.program"); private Activity mActivity; private ShareData mShareData; private View mBackground; private View mButtonsLayout; private UMQQSsoHandler mQqSsoHandler; private QZoneSsoHandler mQZoneSsoHandler; private SinaSsoHandler mSinaSsoHandler; private UMWXHandler mWXHandler; private UMEvernoteHandler mEvernoteHandler; private ViewGroup allButtonsLayout; public static UMSocialService getShareController() { return mController; } public CustomShareBoard(Activity activity, ShareData shareData) { super(activity); this.mActivity = activity; initView(activity); mController.getConfig().closeToast(); mShareData = shareData; } private void addQQ() { mQqSsoHandler.setTargetUrl(mShareData.link); mQqSsoHandler.setTitle(mShareData.name); mQqSsoHandler.addToSocialSDK(); } private void addWX() { mWXHandler.setTargetUrl(mShareData.link); mWXHandler.setTitle(mShareData.name); mWXHandler.addToSocialSDK(); } private void addWXCircle() { mWXHandler.setTargetUrl(mShareData.link); mWXHandler.setTitle(mShareData.des); mWXHandler.setToCircle(true); mWXHandler.addToSocialSDK(); } private void addQQZone() { // 添加QZone平台 mQZoneSsoHandler.setTargetUrl(mShareData.link); mQZoneSsoHandler.addToSocialSDK(); } private void addSinaWeibo() { mController.getConfig().setSsoHandler(mSinaSsoHandler); } private void addEvernote() { mEvernoteHandler.addToSocialSDK(); } public static class ShareData implements Parcelable { public String name = ""; public String link = ""; private String img = ""; public String des = ""; @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeString(name); dest.writeString(link); dest.writeString(img); dest.writeString(des); } private ShareData(Parcel in) { name = in.readString(); link = in.readString(); img = in.readString(); des = in.readString(); } public ShareData(String name, String des, String link) { this.name = name; this.des = des; this.link = link; this.img = ""; } public ShareData(Maopao.MaopaoObject mMaopaoObject) { this.name = mMaopaoObject.owner.name + "的冒泡"; this.link = mMaopaoObject.getMobileLink(); Global.MessageParse parse = HtmlContent.parseMessage(mMaopaoObject.content); this.des = HtmlContent.parseToShareText(parse.text); if (parse.uris.size() > 0) { this.img = parse.uris.get(0); } // String des = HtmlContent.parseToShareText(mMaopaoObject.content); // this.des = HtmlContent.parseToShareText(des); // ArrayList<String> uris = HtmlContent.parseMessage(mMaopaoObject).uris; // if (uris.size() > 0) { // this.img = uris.get(0); // } } public String getImg() { return img; } public void setImg(String img) { this.img = img; } public static final Parcelable.Creator<ShareData> CREATOR = new Parcelable.Creator<ShareData>() { @Override public ShareData createFromParcel(Parcel in) { return new ShareData(in); } @Override public ShareData[] newArray(int size) { return new ShareData[size]; } }; } private void addButton(IconTextView.Data data) { IconTextView iconTextView = new IconTextView(mActivity, null); iconTextView.setData(data); iconTextView.setId(data.id); iconTextView.setOnClickListener(this); allButtonsLayout.addView(iconTextView); ViewGroup.LayoutParams lp = iconTextView.getLayoutParams(); lp.width = MyApp.sWidthPix / 4; iconTextView.setLayoutParams(lp); } @SuppressWarnings("deprecation") private void initView(Context context) { View rootView = LayoutInflater.from(context).inflate(R.layout.share_custom_board, null); final int[] buttns = new int[]{ R.id.close, R.id.rootLayout, R.id.buttonsLayout }; for (int id : buttns) { rootView.findViewById(id).setOnClickListener(this); } final IconTextView.Data[] datas = new IconTextView.Data[]{ new IconTextView.Data(R.id.wechat, "微信好友", R.drawable.icon_share_weixin), new IconTextView.Data(R.id.wechat_circle, "朋友圈", R.drawable.icon_share_weixin_friend), new IconTextView.Data(R.id.qq, "QQ", R.drawable.icon_share_qq), new IconTextView.Data(R.id.qzone, "QQ空间", R.drawable.icon_share_qq_zone), new IconTextView.Data(R.id.sinaWeibo, "微博", R.drawable.icon_share_sina), new IconTextView.Data(R.id.evernote, "印象笔记", R.drawable.icon_share_evernote), new IconTextView.Data(R.id.codingFriend, "Coding好友", R.drawable.icon_share_coding_friend), new IconTextView.Data(R.id.linkCopy, "复制链接", R.drawable.icon_share_copy_link) }; allButtonsLayout = (ViewGroup) rootView.findViewById(R.id.allButtonsLayout); mWXHandler = new UMWXHandler(mActivity, AllThirdKeys.WX_APP_ID, AllThirdKeys.WX_APP_KEY); if (mWXHandler.isClientInstalled()) { addButton(datas[0]); addButton(datas[1]); } mQqSsoHandler = new UMQQSsoHandler(mActivity, AllThirdKeys.QQ_APP_ID, AllThirdKeys.QQ_APP_KEY); if (mQqSsoHandler.isClientInstalled()) { addButton(datas[2]); } mQZoneSsoHandler = new QZoneSsoHandler(mActivity, AllThirdKeys.QQ_APP_ID, AllThirdKeys.QQ_APP_KEY); if (mQZoneSsoHandler.isClientInstalled()) { addButton(datas[3]); } mSinaSsoHandler = new SinaSsoHandler(); // if (mSinaSsoHandler.isClientInstalled()) { addButton(datas[4]); // } mEvernoteHandler = new UMEvernoteHandler(mActivity); if (mEvernoteHandler.isClientInstalled()) { addButton(datas[5]); } addButton(datas[6]); addButton(datas[7]); setContentView(rootView); setWidth(LayoutParams.MATCH_PARENT); setHeight(LayoutParams.WRAP_CONTENT); setFocusable(true); ColorDrawable cd = new ColorDrawable(0xb0000000); setBackgroundDrawable(cd); setTouchable(true); mBackground = rootView.findViewById(R.id.rootLayout); mBackground.startAnimation(AnimationUtils.loadAnimation(mActivity, R.anim.share_dialog_bg_enter)); mButtonsLayout = rootView.findViewById(R.id.buttonsLayout); mButtonsLayout.startAnimation(AnimationUtils.loadAnimation(mActivity, R.anim.share_dialog_buttons_layout_enter)); } @Override public void dismiss() { mBackground.startAnimation(AnimationUtils.loadAnimation(mActivity, R.anim.share_dialog_bg_exit)); mButtonsLayout.startAnimation(AnimationUtils.loadAnimation(mActivity, R.anim.share_dialog_buttons_layout_exit)); super.dismiss(); } private void umengEvent(String s, String param) { MobclickAgent.onEvent(mActivity, s, param); } @Override public void onClick(View v) { int id = v.getId(); switch (id) { case R.id.wechat: umengEvent(UmengEvent.MAOPAO, "分享到微信"); addWX(); performShare(SHARE_MEDIA.WEIXIN); break; case R.id.wechat_circle: umengEvent(UmengEvent.MAOPAO, "分享到朋友圈"); addWXCircle(); performShare(SHARE_MEDIA.WEIXIN_CIRCLE); break; case R.id.qq: umengEvent(UmengEvent.MAOPAO, "分享到qq"); addQQ(); performShare(SHARE_MEDIA.QQ); break; case R.id.qzone: umengEvent(UmengEvent.MAOPAO, "分享到qq空间"); addQQZone(); performShare(SHARE_MEDIA.QZONE); break; case R.id.sinaWeibo: umengEvent(UmengEvent.MAOPAO, "分享到sina"); if (mActivity instanceof MainActivity_ && !OauthHelper.isAuthenticatedAndTokenNotExpired(mActivity, SHARE_MEDIA.SINA)) { Intent intent = new Intent(mActivity, ShareSinaHelpActivity.class); intent.putExtra(ShareSinaHelpActivity.EXTRA_SHARE_DATA, mShareData); mActivity.startActivity(intent); } else { addSinaWeibo(); performShare(SHARE_MEDIA.SINA); } break; case R.id.evernote: umengEvent(UmengEvent.MAOPAO, "分享到evernote"); addEvernote(); performShare(SHARE_MEDIA.EVERNOTE); break; case R.id.codingFriend: umengEvent(UmengEvent.MAOPAO, "分享到好友"); UsersListActivity_.intent(mActivity) .type(UsersListActivity.Friend.Follow) .hideFollowButton(true) .relayString(mShareData.link) .start(); dismiss(); break; case R.id.linkCopy: umengEvent(UmengEvent.MAOPAO, "复制链接"); Global.copy(mActivity, mShareData.link); Toast.makeText(mActivity, "链接已复制 " + mShareData.link, Toast.LENGTH_SHORT).show(); break; case R.id.buttonsLayout: return; default: break; } dismiss(); } private void performShare(SHARE_MEDIA platform) { performShare(platform, mActivity, mShareData); } public static void performShare(SHARE_MEDIA platform, Activity mActivity, ShareData mShareData) { mController.setShareContent(mShareData.des); UMImage umImage; if (!mShareData.getImg().isEmpty()) { umImage = new UMImage(mActivity, mShareData.getImg()); } else { umImage = new UMImage(mActivity, R.drawable.share_default_icon); } mController.setShareImage(umImage); if (platform == SHARE_MEDIA.SINA) { SinaShareContent sinaContent = new SinaShareContent(); sinaContent.setShareContent(mShareData.des + " " + mShareData.link); sinaContent.setTargetUrl(mShareData.link); sinaContent.setShareImage(umImage); sinaContent.setTitle(mShareData.name); mController.setShareMedia(sinaContent); } else if (platform == SHARE_MEDIA.QZONE) { QZoneShareContent qzone = new QZoneShareContent(); qzone.setShareContent(mShareData.des); qzone.setTitle(mShareData.name); qzone.setTargetUrl(mShareData.link); qzone.setShareImage(umImage); mController.setShareMedia(qzone); } mController.postShare(mActivity, platform, new SocializeListeners.SnsPostListener() { @Override public void onStart() { } @Override public void onComplete(SHARE_MEDIA platform, int eCode, SocializeEntity entity) { } } ); } }