关于Android菜单上的记录

标签(空格分隔): Android 菜单


最近在做分享上一下事情,想遵守Android Design 规范做一个分享的菜单但是遇到一些问题

  1. Android上ShareProvider 不支持捕获分享(也许是我没找到),于是就不能针对某个分享项做优化
  2. 抛弃ShareProvider使用,单纯的使用Android的菜单分享选项,这样虽然解决了不能捕获的问题,但是也是带了一个问题,就是无法用比较少的代码来完成分享。(发现弹出对话框的分享方式是最简单省事的)

最后权衡了知识和利弊之后只能做个简单的分享类,在CreateMenu 的时候addSubMenu ,
然后在OnMenuOptionSelected() handle 操作就可以了。

代码如下

package com.changheng.app.ui;import android.content.Context;import android.view.Menu;import android.view.MenuItem;import android.view.SubMenu;import com.changheng.app.R;import cn.sharesdk.framework.Platform;import cn.sharesdk.framework.ShareSDK;import cn.sharesdk.wechat.favorite.WechatFavorite;import cn.sharesdk.wechat.friends.Wechat;import cn.sharesdk.wechat.moments.WechatMoments;/** * Created With Android Studio * User 47 * Date 2015/2/13 * Time 14:29 * 分享助手 */public class ShareMenuHelper  {    private Context mContext;    private SubMenu mSubMenu;    private static ShareItem[] SHARE_ITEM = {            new ShareItem(R.drawable.logo_wechat,                    R.string.wechat,                    ShareSDK.getPlatform(Wechat.NAME)),            new ShareItem(R.drawable.logo_wechatfavorite,                    R.string.wechatfavorite,                    ShareSDK.getPlatform(WechatFavorite.NAME)),            new ShareItem(R.drawable.logo_wechatmoments,                    R.string.wechatmoments,                    ShareSDK.getPlatform(WechatMoments.NAME))    };    public ShareMenuHelper(Context context,SubMenu subMenu){        mContext = context;        mSubMenu = subMenu;    }    public void init(){        int i = 0;        for (ShareItem shareItem : SHARE_ITEM){            SubMenu subMenu = mSubMenu.addSubMenu(                    Menu.NONE,shareItem.id = i++,Menu.NONE,                    shareItem.titleRes);            subMenu.setIcon(shareItem.iconId);        }    }    public void handlerMenuSelected(MenuItem menuItem, Platform.ShareParams shareParams){        int id = menuItem.getItemId();        for (ShareItem shareItem : SHARE_ITEM) {            if (id == shareItem.id) doShare(shareItem,shareParams);        }    }    private void doShare(ShareItem shareItem, Platform.ShareParams shareParams) {        shareItem.platform.share(shareParams);    }    public static class ShareItem{        public int id;        public int iconId;        public int titleRes;        public Platform platform;        public ShareItem( int iconId, int titleRes, Platform platform) {            this.iconId = iconId;            this.titleRes = titleRes;            this.platform = platform;        }    }}

这个东西主要比较纠结的地方在于,如何获取submenu。找了好久才发现代码是这样的

menuItem.getSubMenu();

更多相关文章

  1. Android 多线程之synchronized锁住的是代码还是对象(二)
  2. Android有用代码片断(五)
  3. Android Wi-Fi EAP-SIM代码解析
  4. Android 代码画角标 offcutView
  5. [1] Android主要源代码组成
  6. Android Studio 活动的启动模式 standard singleTop singleTask
  7. Android 实例子源代码文件下载地址380个合集
  8. 安卓布局属性代码中文注解

随机推荐

  1. Android(安卓)属性动画(Property Animatio
  2. android系统体系结构
  3. Android(安卓)开发者必备的十个工具
  4. Android(安卓)中文 API――android.widge
  5. Android线程的学习
  6. Android全屏,隐藏状态栏和标题栏
  7. Android开发中的游戏开发使用View还是Sur
  8. 博文视点大讲堂35期-It's Android(安卓)T
  9. 经典Android系统源代码
  10. Android导出一个JAR库/Android如何将程序