自己定义ShareSDK分享平台界面
自己定义ShareSDK分享平台界面
执行效果图:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZ2FvX2NodW4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" width="400" height="700" alt="">
微信朋友圈分享成功效果图:
注:微信朋友圈分享有两种:一种是为绕过审核,即图中所显示的方式,一种为不绕过审核。两种方式在朋友圈中显示的方式不一样,且分享时弹出的界面也不一样。在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分享平台界面的更多相关文章
- ShareSDK分享失败的原因
关于分享估计很多都用的是ShareSDK的社会化分享,简单方便,支持的种类很多,但是一般的话都还是QQ,微信,新浪微博,腾讯微博为主. 最近需要导入一个分享的模块,失败了几次之后最终成功,分享给大家, ...
- 使用ShareSDK分享-图片的链接
微信中使用ShareSDK分享,需要申请微信开放平台账号,并且以微信中的声明的应用签名打包程序. private void showShare(String url, String title, St ...
- android 项目学习随笔十五(ShareSDK开放平台)
ShareSDK开放平台http://www.mob.com/#/
- HTML5学堂 全新的HTML5/前端技术分享平台
HTML5学堂 全新的HTML5/前端技术分享平台 HTML5学堂是做什么的? HTML5学堂~http://www.h5course.com~由多名热爱H5的讲师们组成的一个组织.致力于构建一个前端 ...
- 使用javascript开发的视差滚动效果的云彩 极客标签 - 做最棒的极客知识分享平台
www.gbtags.com 使用javascript开发的视差滚动效果的云彩 阅读全文:使用javascript开发的视差滚动效果的云彩 极客标签 - 做最棒的极客知识分享平台
- 原创工具14Finger-全能web指纹识别与分享平台
14Finger 功能齐全的Web指纹扫描和分享平台,基于vue3+django前后端分离的web架构,并集成了长亭出品的rad爬虫的功能,内置了一万多条互联网开源的指纹信息. Github:http ...
- iOS更改ShareSDK默认的分享功能界面
ShareSDK的集成这里就不详细介绍了, 官网的都已经够详细了.. 官方的默认分享样式如下: 贴上我的源代码: // 创建分享图片 NSString *imageURLString = @" ...
- Android使用Mob ShareSDK 分享不同平台
Share分享,要注意的是,如果不能调用起微信相关,看看微信开发者平台是否添加正式,微信开发者正式之后,打正式包进行分享调用 /*分享弹框*/ private void showShare2() { ...
- 28、shareSDK分享以及 QQ应用平台申请遇到的问题
第一点:菜单列表没出来 未添加白名单 第二点: QQ平台申请,和安卓共用一个APP名字,出现的 问题 第三点
随机推荐
- DMARC 介绍
DMARC 是什么? DMARC 是 “Domain-based Message Authentication, Reporting & Conformance” 的缩写.它用来检查一封电邮是 ...
- Java 判断字符串的存储长度
判断前台输入项的长度应该都会碰到String.length() 判断出来没有超出最大长度,存到数据库就超出长度的问题,oracle字符集是gbk的不太清楚,如果是UTF-8,中文是占三个字符的,所以 ...
- SQLServer2008 字符串函数一览表
/* 字符串函数 (PS.索引都从1开始计算)*/ /* 指定字符(或字符串)A.字符串B.起始索引.获得A在B中的索引值.*/select Charindex('d','abcdefg',0) -- ...
- 获取XML里指定的节点内容信息
HttpContent bw = new StringContent(StrXml, Encoding.UTF8, "application/Xml"); var Msg = aw ...
- 【PLSQL】游标
Oracle中的SQL在执行时需要分配一块内存区域,这块内存区域叫做上下文区. 上下文区中记录了SQL语句的处理信息,这些信息包括:查询返回的数据行.查询所处理的数据的行号.指向共享池中的已分析的SQ ...
- C#使用各种时间戳及转换
/// <summary> /// DateTime时间格式转换为13位带毫秒的Unix时间戳 /// </summary> /// <param name=" ...
- dell inspiron 15 3000 装XP win7 等GHOST系统方法
dell inspiron 装XP win7 等GHOST系统方法 . 开机按F2,进入BIOS .在 BIOS 的Boot菜单下,将Secure Boot 改为 Disabled . 将Boot L ...
- End to End Sequence Labeling via Bi-directional LSTM CNNs CRF
来看看今日头条首席科学家的论文: End-to-end Sequence Labeling via Bi-directional LSTM-CNNs-CRF 使用LSTM方法进行序列标注,完成大规模标 ...
- (转)基于openlayers实现聚类统计展示
http://blog.csdn.net/gisshixisheng/article/details/46137015 概述: 在前面的博文中讲述过基于Arcgis for js如何实现聚类统计展示, ...
- js 二级联动
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...