自己定义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名字,出现的 问题 第三点
随机推荐
- [Contest Hunter#17-C] 舞动的夜晚
[题目链接] http://contest-hunter.org:83/contest/CH%20Round%20%2317/%E8%88%9E%E5%8A%A8%E7%9A%84%E5%A4%9C% ...
- 267C
二分+高斯消元 我们利用物理里的势能来表示,每个点有一个势能h,再由流量守恒可以得到deg[x]*h[x]=sigma(h[y]) 如果x,y之间有边.这个式子是由流量守恒推出的,所以当x=1或n是不 ...
- 最短路径问题(floyd)
http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=1867 #include<stdio.h& ...
- Servlet初始化与异步支持
Shared libraries(共享库) / runtimes pluggability(运行时插件能力) 1.Servlet容器启动会扫描,当前应用里面每一个jar包的 ServletContai ...
- A - Word
Problem description Vasya is very upset that many people on the Net mix uppercase and lowercase lett ...
- # Nginx设置浏览器缓存
配置语法 在location或if段里,来写. 格式 expires 30s; expires 30m; expires 2h; expires 30d; (注意:服务器的日期要准确,如果服务器的日期 ...
- 【sqli-labs】 less18 POST - Header Injection - Uagent field - Error based (基于错误的用户代理,头部POST注入)
这次username和password都进行了输入校验 但是ip和uagent没有校验 当我们用admin admin登陆成功后,就会一条插入语句 由于程序无条件的信任了浏览器的header信息,那么 ...
- python自动发邮件库yagmail(转)
一般发邮件方法 我以前在通过Python实现自动化邮件功能的时候是这样的: import smtplib from email.mime.text import MIMEText from email ...
- 单链表每k个节点一组进行反转(最后不足k个也反转)
一道面试题,第一次碰到这道题的时候 要求10分钟之内手写代码实现,当时没写出来,后来花点时间把过程梳理一遍,也挺简单的....... 思路就是在原来单链表反转的基础上,加几个控制参数,记录几个关键节点 ...
- 肯德基收银系统java
参考肯德基官网的信息模拟肯德基快餐店的收银系统,合理使用C++或Java或Python结合设计模式(2种以上)至少实现系统的以下功能: 1.正常餐品结算和找零. 2.基本套餐结算和找零. 3.使用优惠 ...