android-shareSDK解析&自定义分享UI&分享到指定平台。

原创 2017年01月02日 22:38:32

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);
    }
}

style

<!--shareDialog的样式-->
    <style name="share_dialog" parent="Theme.AppCompat.Dialog">
        <item name="android:windowAnimationStyle">@style/dialog_animation</item>
        <item name="android:windowBackground">@color/white</item>
    </style>


    <style name="dialog_animation" parent="android:Animation">
        <item name="@android:windowEnterAnimation">@anim/push_bottom_in</item>
        <item name="@android:windowExitAnimation">@anim/push_bottom_out</item>
    </style>


    <color name="white">#fff</color>

anim

anim/push_bottom_in.xml

<?xml version="1.0" encoding="utf-8"?><!-- 上下滑入式 -->
<set xmlns:android="http://schemas.android.com/apk/res/android">

    <translate
        android:duration="200"
        android:fromYDelta="50%p"
        android:toYDelta="0" />

</set>

anim/push_bottom_out.xml

<?xml version="1.0" encoding="utf-8"?>
<!-- 上下滑入式 -->
<set xmlns:android="http://schemas.android.com/apk/res/android" >

    
    <translate
        android:duration="200"
        android:fromYDelta="0"
        android:toYDelta="50%p" />

</set>

在dialog里布局需要分享到的平台的图标


然后就是调用shareSDK的onekeyShare接口把内容分享到指定平台。







版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

shareSDK分享平台分享内容出去显示“来自XXX”的问题及其如何修改分享菜单的背景图片以及调用无UI方法自定义UI分享

通常用我们demo里的appkey分享到某个平台会显示”来自ShareSDK“,这个应用的名称不是由我们的SDK来更改的,这个是开发者自己到对应的分享平台去注册应用,然后把注册应用得到的这个appke...

shareSDK自定义分享界面UI

今天设计又给了几个界面的标注,要求完善UI,其中就包括分享界面,于是我立即询问shareSDK的技术支持(找到shareSDK的官网,然后点击企业QQ就可以询问了),技术支持给的解释是,如果要用sha...

自定义ShareSDK分享平台界面

自定义ShareSDK分享平台界面 运行效果图: 微信朋友圈分享成功效果图: 注:微信朋友圈分享有两种:一种是为绕过审核,即图中所显示的方式,一种为不绕过审核,两...

Android - 小功能 - 利用最新版ShareSDK进行手动分享(自定义分享界面)

利用最新版ShareSDK进行手动分享(自定义分享界面)

ShareSDK自定义分享

  • 2015-12-11 15:14
  • 373KB
  • 下载

Android 使用shareSDK分享(快捷分享和分享到指定平台)(微信,qq,微博)

第一步:下载SDK:http://www.mob.com/#/downloadDetail/ShareSDK/Android,选择自己要集成的平台,下载 解压文件,打开ShareSDK for An...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)