shareSDK能够集成快速分享。帮开发者把分享面板和示例代码都封装了。但是我们用不到分享面板。能用到的就是OneKeyShare作为快速集成的接口。
别忘了,我们可以自己定义分享面板。
官方给的快速生成代码示例有bug,分享面板滑到最后一页再回到第一页会出现问题,图标显示不全的问题。
其实在无界面方法里,我们也可以调用onekeyShare接口。并且是非常的方便。官方demo里也给出了说明:如果你指定了平台,就不会调用系统的界面。
/**
* 演示调用ShareSDK执行分享
*
* @param context
* @param platformToShare 指定直接分享平台名称(一旦设置了平台名称,则九宫格将不会显示)
假设把platformToShare
* @param showContentEdit 是否显示编辑页
*/
public static void showShare(Context context, String platformToShare, boolean showContentEdit) {
OnekeyShare oks = new OnekeyShare();
oks.setSilent(!showContentEdit);
if (platformToShare != null) {
// Platform weibo = ShareSDK.getPlatform(SinaWeibo.NAME);platform字段就是SinaWeibo.NAME
//指定了分享平台,直接分享到指定平台就可以了呀,就没有必要再让用户选择了。
oks.setPlatform(platformToShare);
}
//ShareSDK快捷分享提供两个界面第一个是九宫格 CLASSIC 第二个是SKYBLUE
oks.setTheme(OnekeyShareTheme.CLASSIC);
// 令编辑页面显示为Dialog模式
oks.setDialogMode();
// 在自动授权时可以禁用SSO方式
oks.disableSSOWhenAuthorize();
//oks.setAddress("12345678901"); //分享短信的号码和邮件的地址
oks.setTitle("ShareSDK--Title");
oks.setTitleUrl("http://mob.com");
oks.setText("ShareSDK--文本");
//oks.setImagePath("/sdcard/test-pic.jpg"); //分享sdcard目录下的图片
oks.setImageUrl("http://f1.webshare.mob.com/dimgs/1c950a7b02087bf41bc56f07f7d3572c11dfcf36.jpg");
oks.setUrl("http://www.mob.com"); //微信不绕过审核分享链接
//oks.setFilePath("/sdcard/test-pic.jpg"); //filePath是待分享应用程序的本地路劲,仅在微信(易信)好友和Dropbox中使用,否则可以不提供
oks.setComment("分享"); //我对这条分享的评论,仅在人人网和QQ空间使用,否则可以不提供
oks.setSite("ShareSDK"); //QZone分享完之后返回应用时提示框上显示的名称
oks.setSiteUrl("http://mob.com");//QZone分享参数
oks.setVenueName("ShareSDK");
oks.setVenueDescription("This is a beautiful place!");
// 将快捷分享的操作结果将通过OneKeyShareCallback回调
//oks.setCallback(new OneKeyShareCallback());
// 去自定义不同平台的字段内容
//oks.setShareContentCustomizeCallback(new ShareContentCustomizeDemo());
// 在九宫格设置自定义的图标
Bitmap logo = BitmapFactory.decodeResource(context.getResources(), R.drawable.addbyme);
String label = "ShareSDK";
OnClickListener listener = new OnClickListener() {
public void onClick(View v) {
}
};
oks.setCustomerLogo(logo, label, listener);
// 为EditPage设置一个背景的View
//oks.setEditPageBackground(getPage());
// 隐藏九宫格中的新浪微博
// oks.addHiddenPlatform(SinaWeibo.NAME);
// String[] AVATARS = {
// "http://99touxiang.com/public/upload/nvsheng/125/27-011820_433.jpg",
// "http://img1.2345.com/duoteimg/qqTxImg/2012/04/09/13339485237265.jpg",
// "http://diy.qqjay.com/u/files/2012/0523/f466c38e1c6c99ee2d6cd7746207a97a.jpg",
// "http://diy.qqjay.com/u2/2013/0422/fadc08459b1ef5fc1ea6b5b8d22e44b4.jpg",
// "http://img1.2345.com/duoteimg/qqTxImg/2012/04/09/13339510584349.jpg",
// "http://diy.qqjay.com/u2/2013/0401/4355c29b30d295b26da6f242a65bcaad.jpg" };
// oks.setImageArray(AVATARS); //腾讯微博和twitter用此方法分享多张图片,其他平台不可以
// 启动分享
oks.show(context);
}
选择dialog作为弹出框,popupWindow作为弹出框?
dialog效果:有一层蒙版的效果。这里我们选择dialog作为弹出框。
AlertDialog alertDialog = new AlertDialog.Builder(this)
.setTitle("观察效果")
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//snackbar在design包里
Toast.makeText(MainActivity.this, "确定", Toast.LENGTH_SHORT).show();
}
})
.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
})
.create();
alertDialog.show();
自定义dialog,并伴随进入退出动画。
public class CustomDialog extends AppCompatDialog {
public CustomDialog(Context context) {
super(context, R.style.share_dialog);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
supportRequestWindowFeature(Window.FEATURE_NO_TITLE);//去标题栏
setContentView(R.layout.layout_share_dialog);
int widthPixels = getContext().getResources().getDisplayMetrics().widthPixels;
WindowManager.LayoutParams layoutParams = getWindow().getAttributes();
layoutParams.width = widthPixels;
layoutParams.height = getContext().getResources().getDisplayMetrics().heightPixels/3;
layoutParams.gravity = Gravity.BOTTOM;
getWindow().setAttributes(layoutParams);
}
}
#fff
anim/push_bottom_in.xml
然后就是调用shareSDK的onekeyShare接口把内容分享到指定平台。