一、说明
1. 友盟分享涉及到比较重要的类
- ShareAction:分享的主类
- SHARE_MEDIA:枚举类,定义了可分享平台的类型
- PlatformName:定义了所有可分享的平台名称
Platform 里比较特殊的一个“MORE”,说明一下,这个按钮会自动调起Android原生的分享,也就是Intent.SEND,但是有个比较坑的地方(PlatformName没有支持英文,也不支持修改,只能通过增加自定义按钮解决)。
2. 分享方式
- 方式一:使用ShareAction.share(); 调起分享(这个需要自己提供分享按钮)
- 方式二:使用ShareAction.open(); 弹出分享面板
二、效果
三、用例
ShareBoardlistener shareBoardlistener = new ShareBoardlistener() {
@Override
public void onclick(SnsPlatform snsPlatform, SHARE_MEDIA share_media) {
if (share_media == null) {
//根据key来区分自定义按钮的类型,并进行对应的操作
switch (snsPlatform.mKeyword) {
case "custom_copy":
break;
case "custom_share":
break;
case "custom_more":
break;
}
} else {
//社交平台的分享行为
new ShareAction((Activity) context)
.setPlatform(share_media)
.setCallback(new UMShareListener() {
@Override
public void onStart(SHARE_MEDIA share_media) {
}
@Override
public void onResult(SHARE_MEDIA share_media) {
}
@Override
public void onError(SHARE_MEDIA share_media, Throwable throwable) {
}
@Override
public void onCancel(SHARE_MEDIA share_media) {
}
})
.withText("多平台分享")
.share();
}
}
};
// 自定义ShareBoardConfig
ShareBoardConfig config = new ShareBoardConfig().setStatusBarHeight(0)
.setShareboardBackgroundColor(context.getResources().getColor(R.color.app_theme_color)) // 设置面板颜色
.setMenuItemBackgroundColor(Color.TRANSPARENT) // 设置item背景颜色透明(不要背景色和背景框)
.setMenuItemTextColor(Color.WHITE) // 设置item文字颜色
.setTitleTextColor(Color.WHITE)
.setTitleText("SHARE TO");
// .setTitleVisibility(false) // 设置不显示弹窗标题
// .setIndicatorVisibility(false) // 设置不需要指示器(那个小点)
// .setCancelButtonVisibility(false); // 设置不需要取消按钮
new ShareAction((Activity) context).withText("hello")
.setDisplayList(SHARE_MEDIA.WHATSAPP, SHARE_MEDIA.INSTAGRAM, SHARE_MEDIA.MORE)
// 自定义按钮参数顺序: icon平台描述, 平台名称(用于标识平台id) , icon name(正常icon) , icon name(置灰情况下的icon)
.addButton("More", "custom_more", "umeng_socialize_more", "umeng_socialize_more") // icon只要name就行,可以放drawable下
.addButton("Share", "custom_share", "umeng_socialize_menu_default", "umeng_socialize_menu_default")
.addButton("Copy url", "custom_copy", "umeng_socialize_copyurl", "umeng_socialize_copyurl")
.setShareboardclickCallback(shareBoardlistener)
.open(config);