自己定義ShareSDK分享平臺界面
阿新 • • 發佈:2017-07-02
sso iss rep ram col moment Ltd. override @override
自己定義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.別忘記了加入微信回調
註:包名別搞錯了
演示樣例源代碼下載鏈接:http://download.csdn.net/detail/gao_chun/8264873
自己定義ShareSDK分享平臺界面