zoukankan      html  css  js  c++  java
  • 自己定义ShareSDK分享平台界面

    自己定义ShareSDK分享平台界面


    执行效果图:



    微信朋友圈分享成功效果图:


    注:微信朋友圈分享有两种:一种是为绕过审核,即图中所显示的方式,一种为不绕过审核。两种方式在朋友圈中显示的方式不一样,且分享时弹出的界面也不一样。在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

  • 相关阅读:
    FullCalendar日历插件说明文档
    Git忽略规则及.gitignore规则不生效的解决办法
    学习git config配置文件
    拼接最长回文串
    Gildong owns a bulgogi restaurant
    前m大的数
    求水洼(dfs)
    循环数组的最大子段和
    求叶子节点
    周期
  • 原文地址:https://www.cnblogs.com/cynchanpin/p/7105382.html
Copyright © 2011-2022 走看看