自定义ShareSDK分享平台界面
运行效果图:
微信朋友圈分享成功效果图:
注:微信朋友圈分享有两种:一种是为绕过审核,即图中所显示的方式,一种为不绕过审核,两种方式在朋友圈中显示的方式不一样,且分享时弹出的界面也不一样。在shareSDK.xml中设置BypassApproval="true",即BypassApproval是绕过审核的标记,设置为true后AppId将被忽略
1.弹出分享提示九宫格类:SharePopupWindow.java
package com.example.sharesdk; import android.content.Context; import android.graphics.drawable.ColorDrawable; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup.LayoutParams; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.Button; import android.widget.GridView; import android.widget.PopupWindow; import cn.sharesdk.framework.Platform; import cn.sharesdk.framework.Platform.ShareParams; import cn.sharesdk.framework.PlatformActionListener; import cn.sharesdk.framework.ShareSDK; /** * TODO<分享工具> * @data: 2014-7-21 下午2:45:38 * @version: V1.0 */ public class SharePopupWindow extends PopupWindow { private Context context; private PlatformActionListener platformActionListener; private ShareParams shareParams; public SharePopupWindow(Context cx) { this.context = cx; } public PlatformActionListener getPlatformActionListener() { return platformActionListener; } public void setPlatformActionListener( PlatformActionListener platformActionListener) { this.platformActionListener = platformActionListener; } public void showShareWindow() { View view = LayoutInflater.from(context).inflate(R.layout.share_layout,null); GridView gridView = (GridView) view.findViewById(R.id.share_gridview); ShareAdapter adapter = new ShareAdapter(context); gridView.setAdapter(adapter); Button btn_cancel = (Button) view.findViewById(R.id.btn_cancel); // 取消按钮 btn_cancel.setOnClickListener(new OnClickListener() { public void onClick(View v) { // 销毁弹出框 dismiss(); } }); // 设置SelectPicPopupWindow的View this.setContentView(view); // 设置SelectPicPopupWindow弹出窗体的宽 this.setWidth(LayoutParams.FILL_PARENT); // 设置SelectPicPopupWindow弹出窗体的高 this.setHeight(LayoutParams.WRAP_CONTENT); // 设置SelectPicPopupWindow弹出窗体可点击 this.setFocusable(true); // 设置SelectPicPopupWindow弹出窗体动画效果 this.setAnimationStyle(R.style.AnimBottom); // 实例化一个ColorDrawable颜色为半透明 ColorDrawable dw = new ColorDrawable(0xb0000000); // 设置SelectPicPopupWindow弹出窗体的背景 this.setBackgroundDrawable(dw); gridView.setOnItemClickListener(new ShareItemClickListener(this)); } private class ShareItemClickListener implements OnItemClickListener { private PopupWindow pop; public ShareItemClickListener(PopupWindow pop) { this.pop = pop; } @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { share(position); pop.dismiss(); } } /** * 分享 * * @param position */ private void share(int position) { if (position == 1) { qq(); } else if (position == 4) { qzone(); } else if(position==5){ shortMessage(); }else{ Platform plat = null; plat = ShareSDK.getPlatform(context, getPlatform(position)); if (platformActionListener != null) { plat.setPlatformActionListener(platformActionListener); } plat.share(shareParams); } } /** * 初始化分享参数 * * @param shareModel */ public void initShareParams(ShareModel shareModel) { if (shareModel != null) { ShareParams sp = new ShareParams(); sp.setShareType(Platform.SHARE_TEXT); sp.setShareType(Platform.SHARE_WEBPAGE); sp.setTitle(shareModel.getText()); sp.setText(shareModel.getText()); sp.setUrl(shareModel.getUrl()); sp.setImageUrl(shareModel.getImageUrl()); shareParams = sp; } } /** * 获取平台 * * @param position * @return */ private String getPlatform(int position) { String platform = ""; switch (position) { case 0: platform = "Wechat"; break; case 1: platform = "QQ"; break; case 2: platform = "SinaWeibo"; break; case 3: platform = "WechatMoments"; break; case 4: platform = "QZone"; break; case 5: platform = "ShortMessage"; break; } return platform; } /** * 分享到QQ空间 */ private void qzone() { ShareParams sp = new ShareParams(); sp.setTitle(shareParams.getTitle()); sp.setTitleUrl(shareParams.getUrl()); // 标题的超链接 sp.setText(shareParams.getText()); sp.setImageUrl(shareParams.getImageUrl()); sp.setComment("我对此分享内容的评论"); sp.setSite(shareParams.getTitle()); sp.setSiteUrl(shareParams.getUrl()); Platform qzone = ShareSDK.getPlatform(context, "QZone"); qzone.setPlatformActionListener(platformActionListener); // 设置分享事件回调 // // 执行图文分享 qzone.share(sp); } private void qq() { ShareParams sp = new ShareParams(); sp.setTitle(shareParams.getTitle()); sp.setTitleUrl(shareParams.getUrl()); // 标题的超链接 sp.setText(shareParams.getText()); sp.setImageUrl(shareParams.getImageUrl()); sp.setComment("我对此分享内容的评论"); sp.setSite(shareParams.getTitle()); sp.setSiteUrl(shareParams.getUrl()); Platform qq = ShareSDK.getPlatform(context, "QQ"); qq.setPlatformActionListener(platformActionListener); qq.share(sp); } /** * 分享到短信 */ private void shortMessage() { ShareParams sp = new ShareParams(); sp.setAddress(""); sp.setText(shareParams.getText()+"这是网址《"+shareParams.getUrl()+"》很给力哦!"); Platform circle = ShareSDK.getPlatform(context, "ShortMessage"); circle.setPlatformActionListener(platformActionListener); // 设置分享事件回调 // 执行图文分享 circle.share(sp); } }
2.显示九宫格的ShareAdapter .java类
/* * @Title: ShareAdapter.java * @Copyright: XXX Co., Ltd. Copyright YYYY-YYYY, All rights reserved * @data: 2014-7-21 下午2:30:32 * @version: V1.0 */ package com.example.sharesdk; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; /** * TODO< 分享弹出框Adapter > * @data: 2014-7-21 下午2:30:32 * @version: V1.0 */ public class ShareAdapter extends BaseAdapter { private static String[] shareNames = new String[] {"微信", "QQ", "微博","朋友圈", "QQ空间", "短信"}; private int[] shareIcons = new int[] {R.drawable.sns_weixin_icon, R.drawable.sns_qqfriends_icon, R.drawable.sns_sina_icon,R.drawable.sns_weixin_timeline_icon, R.drawable.sns_qzone_icon,R.drawable.short_message_nor}; private LayoutInflater inflater; public ShareAdapter(Context context) { inflater = LayoutInflater.from(context); } @Override public int getCount() { return shareNames.length; } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null){ convertView = inflater.inflate(R.layout.share_item, null); } ImageView shareIcon = (ImageView) convertView.findViewById(R.id.share_icon); TextView shareTitle = (TextView) convertView.findViewById(R.id.share_title); shareIcon.setImageResource(shareIcons[position]); shareTitle.setText(shareNames[position]); return convertView; } }
3.别忘记了添加微信回调
注:包名别搞错了
示例源码下载链接:http://download.csdn.net/detail/gao_chun/8264873