自訂ShareSDK分享平台介面,sharesdk分享平台
自訂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