> >

使用默认UI风格

适用人群:希望10分钟集成从无到有实现分享的开发者

接口说明:调用该接口将先弹出分享平台选择页,选择相应的平台将进行分享。

点此查看视频

1、修改九宫格界面图标的顺序

功能介绍:可任意调整分享菜单中的社交平台的排序功能介绍:将编辑框的标题栏颜色与您的APP统一风格

只需要手动更新数组的顺序即可,SortId属性控制平台图标的排列顺序,从“1”开始,越大越后面,九宫格按照左到右,上到下顺序排列,

详情请见demo

    <SinaWeibo
        Id="1"
        SortId="1"
        AppKey="568898243"
        AppSecret="38a4f8204cc784f81f9f0daaf31e02e3"
        RedirectUrl="http://www.sharesdk.cn"
        ShareByAppClient="true"
        Enable="true" />

    <TencentWeibo
        Id="2" 
        SortId="2"
        AppKey="801307650"
        AppSecret="ae36f4ee3946e1cbb98d6965b0b2ff5c"
        RedirectUri="http://"
        Enable="true" />

运行效果如图:

07   007

2、隐藏分享图文编辑页面

功能介绍:进去编辑框自动分享,不显示分享菜单

在一键分享方法中添加代码并且修改下代码:

oks.setSilent(true);   隐藏编辑页面

oks.setSilent(false); 显示编辑页面

3、自定义UI分享

功能介绍:可以自己设计UI,不显示我们的分享菜单和编辑框,可以分两种事先方法:

分享形式a》可以调用快捷分享代码实现

设定自定义UI调用onekeyshare代码可参考帖子–不同平台分享不同内容,本帖子里有demo代码可下载下来参考

private void showShare(String platform) {
	final OnekeyShare oks = new OnekeyShare();
	//指定分享的平台,如果为空,还是会调用九宫格的平台列表界面
	if (platform != null) {
		oks.setPlatform(platform);
	}
	//关闭sso授权
	oks.disableSSOWhenAuthorize(); 
	// title标题,印象笔记、邮箱、信息、微信、人人网和QQ空间使用
	oks.setTitle("标题");
	// titleUrl是标题的网络链接,仅在Linked-in,QQ和QQ空间使用
	oks.setTitleUrl("http://sharesdk.cn");
	// text是分享文本,所有平台都需要这个字段
	oks.setText("我是分享文本");
	//分享网络图片,新浪微博分享网络图片需要通过审核后申请高级写入接口,否则请注释掉测试新浪微博
	oks.setImageUrl("http://f1.sharesdk.cn/imgs/2014/02/26/owWpLZo_638x960.jpg");
	// imagePath是图片的本地路径,Linked-In以外的平台都支持此参数
	//oks.setImagePath("/sdcard/test.jpg");//确保SDcard下面存在此张图片
	// url仅在微信(包括好友和朋友圈)中使用
	oks.setUrl("http://sharesdk.cn");
	// comment是我对这条分享的评论,仅在人人网和QQ空间使用
	oks.setComment("我是测试评论文本");
	// site是分享此内容的网站名称,仅在QQ空间使用
	oks.setSite("ShareSDK");
	// siteUrl是分享此内容的网站地址,仅在QQ空间使用
	oks.setSiteUrl("http://sharesdk.cn");

	//启动分享
	oks.show(this);
}

在设置的按钮下调用分享的代码:

public void onClick(View v) {
	//比如分享到QQ,其他平台则只需要更换平台类名,例如Wechat.NAME则是微信
	Platform plat = ShareSDK.getPlatform(QQ.NAME);
	showShare(plat.getName());
}

 

分享形式b》指定单独平台的分享(无九宫格界面)

下面分别使用新浪微博和QQ空间作为例子,举例如何利用此方法实现分享功能。可以参考帖子:ShareSDK自定义界面+仿搜狐视频弹窗分享详解

1)新浪微博

ShareParams sp = new ShareParams();
sp.setText(“测试分享的文本”);
sp.setImagePath(“/mnt/sdcard/测试分享的图片.jpg”);

Platform weibo = ShareSDK.getPlatform(SinaWeibo.NAME);
weibo.setPlatformActionListener(paListener); // 设置分享事件回调
// 执行图文分享
weibo.share(sp);

2)QQ空间

ShareParams sp = new ShareParams();
sp.setTitle("测试分享的标题");
sp.setTitleUrl("http://sharesdk.cn"); // 标题的超链接
sp.setText("测试分享的文本");
sp.setImageUrl("http://www.someserver.com/测试图片网络地址.jpg");
sp.setSite("发布分享的网站名称");
sp.setSiteUrl("发布分享网站的地址");

Platform qzone = ShareSDK.getPlatform (QZone.NAME);
// 设置分享事件回调(注:回调放在不能保证在主线程调用,不可以在里面直接处理UI操作)
qzone.setPlatformActionListener (new PlatformActionListener() {
	public void onError(Platform arg0, int arg1, Throwable arg2) {
		//失败的回调,arg:平台对象,arg1:表示当前的动作,arg2:异常信息
	}
	public void onComplete(Platform arg0, int arg1, HashMap arg2) {
		//分享成功的回调
	}
	public void onCancel(Platform arg0, int arg1) {
		//取消分享的回调
	}
});
// 执行图文分享
qzone.share(sp);

具体各个平台具体所需参数可以参考不同平台的详细参数说明

4、自定义分享菜单项

功能介绍:在分享菜单中加入自定义的按钮

快捷分享的九宫格列表提供添加自定义图标的功能,方法如下:

OnekeyShare oks = new OnekeyShare();
// 参考代码配置章节,设置分享参数
// 构造一个图标
		 Bitmap enableLogo = BitmapFactory.decodeResource(context.getResources(), R.drawable.ssdk_oks_logo_qq);
		 String label = "ShareSDK";
		 OnClickListener listener = new OnClickListener() {
		 	public void onClick(View v) {

		 	}
		 };
                 oks.setCustomerLogo(enableLogo, label, listener);
oks.show(context);

这样的代码可以多次使用,以添加任意数量的自定义图标。快捷分享默认会将自定义图标放在九宫格的最后位置,如果您需要放在它在其他地方,可以到PlatformGridView.PlatformAdapter中修改代码

5、为不同平台定义差异化分享内容

自定义分享demo下载:one、、two

快捷分享允许开发者设置了统一的分享模板以后,为不同平台设置差别化的分享内容。为了实现这个功能,需要为快捷分享提供一个ShareContentCustomizeCallback的实例,并参考下面的伪代码设置到快捷分享中:

OnekeyShare oks = new OnekeyShare();
// 参考代码配置章节,设置分享参数
//通过OneKeyShareCallback来修改不同平台分享的内容
oks.setShareContentCustomizeCallback(new ShareContentCustomizeDemo());
oks.show(context);

ShareContentCustomizeCallback是一个接口,使用时需要实现其onShare(Platform, ShareParams)方法。此方法被回调的时候会传递一个即将执行分享的平台实例和即将被分享的分享内容(ShareParams)。开发者可以通过修改这个ShareParams参数完成分享内容根据平台的差异化。

/**
 * 快捷分享项目现在添加为不同的平台添加不同分享内容的方法。
 *本类用于演示如何区别Twitter的分享内容和其他平台分享内容。
 */

public class ShareContentCustomizeDemo implements ShareContentCustomizeCallback {

        public void onShare(Platform platform, ShareParams paramsToShare) {
                // 改写twitter分享内容中的text字段,否则会超长,
                // 因为twitter会将图片地址当作文本的一部分去计算长度
                if (Twitter.NAME.equals(platform.getName())) {
                        String text = platform.getContext().getString(R.string.share_content_short);
                        paramsToShare.setText(text);
                }
        }

}

6、自定义外部回调

新版本的快捷分享添加了一个callback的Extra,可以在启动快捷分享的时候,设置一个callback给它,于是快捷分享操作结束以后,不再调用自己的callback,而是调用从外部设置进来的callback。设置方法和其他的extra类似:

OnekeyShare oks = new OnekeyShare();
// 参考代码配置章节,设置分享参数
// 设置自定义的外部回调
oks.setCallback(new OneKeyShareCallback());
oks.show(context);

上述代码中的OneKeyShareCallback是一个实现了PlatformActionListener的类,因此它有onComplete、onError和onCancel等方法。启动快捷分享的时候将OneKeyShareCallback的类名传递进去,快捷分享自己会尝试创建其实例,如果创建失败或者没有传递callback字段,则使用默认的callback,如果成功,则以后会将分享结果给这个类处理。

7、自定义九宫格背景颜色

更多的一键分析那个弹出框的UI修改参考下面这个demo,比如弹出时背后Activity变半透明,文字大小颜色设置、图标的边距、间距,弹出框的位置,弹出时的动画等;

点击下载一键分享弹出框UI自定义demo(内附说明文档)

九宫格的背景颜色可以在src下cn.sharesdk.onekeyshare.theme.classic包下PlatformListPage.java类改背景图片即可;

07

效果如图所示:

007  08

8、自定义九宫格取消按钮(2.7.0以后的版本没有取消按钮)

在PlatformListPage.java类中修改背景图片即可

07

btnCancel.setTextColor(0xffff0000);这个是设置取消字体颜色的;

效果如果所示:

08  07

9、自定义九宫格文字颜色

PlatformGridView.java类中修改字体颜色

07

效果如图所示:

07    07

此UI界面上的图标可以替换图片来换取开发这想要的效果,具体的可以在PlatformGridView.java类下修改此界面。

10、授权页面标题栏去掉ShareSDK Logo部分

更多的授权页面UI修改参考下面这个demo,比如隐藏标题栏、标题文字和样式修改、反回按钮修改、启动授权页面时的动画自定义或禁用动画等;可以参考《自定义授权界面

参考sdk说明文档,继承一个AuthorizeAdapter的类,然后重写其onCreate方法,并在方法的开始添加
hideShareSDKLogo(),具体步骤可以参考官网例子Sample下的MyAdapter.java文件,如图所示:隐藏logo1

保存以后,将此类注册到AndroidManifest.xml的ShareSDKUIShell下面,如图所示:

自定义