自己定义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);
// 取消button
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.别忘记了加入微信回调
注:包名别搞错了