自己定义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名字,出现的 问题 第三点
随机推荐
- ks shell OpenStack 封装
- 第14课 SourceTree程序操作介绍
http://www.atlassian.com/software/sourcetree/overview https://www.microsoft.com/net/framework/versio ...
- 当Shell遇上了Node.js(转载)
转载:http://developer.51cto.com/art/201202/315066.htm 好吧,我承认,这个标题有点暧昧的基情,但是希望下文的内部能给不熟悉或不喜欢Shell或WIN平台 ...
- python请求服务器图片并下载到本地磁盘
>>> import os >>> os.getcwd() 'C:\\Python33' >>> os.chdir('E:\\python\\mm ...
- XOJ测试 2016.5.22
哈哈 我是最先使用XOJ的人之一 膜拜zrt ing 首先是XOJ神奇的界面 还没有建设完的OJ是这个样子的 一共有5道题 这次小测有3道题 是T2T3T4 首先是骑士精神 (BZOJ1085) 上来 ...
- 生成jsp验证码的代码详解(servlet版)
package util; import java.util.*; import java.io.*; import java.awt.*; import java.awt.image.*; impo ...
- P2241 统计方形(数据加强版)
题目背景 1997年普及组第一题 题目描述 有一个n*m方格的棋盘,求其方格包含多少正方形.长方形 输入输出格式 输入格式: n,m因为原来数据太弱,现规定m小于等于5000,n小于等于5000(原来 ...
- Java导入excel并保存到数据库
首先建立好excel表格,并对应excel表格创建数据库表. 前台jsp页面:其中包含js <%@ page language="java" import="jav ...
- Verification之PSL之intro
1 PSL - Property specification language 1.1 Property - Characteristics of the designs/verification e ...
- 图像局部显著性—点特征(FREAK)
参考文章:Freak特征提取算法 圆形区域分割 一.Brisk特征的计算过程(参考对比): 1.建立尺度空间:产生8层Octive层. 2.特征点检测:对这8张图进行FAST9-16角点检测,得到具 ...