博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于Android菜单上的记录
阅读量:6419 次
发布时间:2019-06-23

本文共 2669 字,大约阅读时间需要 8 分钟。

关于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();

转载于:https://www.cnblogs.com/Jabba93/p/4292173.html

你可能感兴趣的文章
关于图片加载非常爽的一个三方控件 fresco,一个三fresco
查看>>
mysql 存储过程
查看>>
开机自启动redis
查看>>
系统界面图片
查看>>
揭开Linux操作系统的Swap交换区之谜
查看>>
Linus爱GPL 但不喜欢GPL诉讼
查看>>
第五十节,面向对象基本介绍
查看>>
昂靠的由来[本博作者爆料]
查看>>
Excle中LOOKUP经典用法
查看>>
能源项目xml文件 -- springMVC-servlet.xml -- default-lazy-init
查看>>
用过属性来给标签加样式
查看>>
__new__方法
查看>>
Oracle死锁
查看>>
python3用BeautifulSoup用re.compile来匹配需要抓取的href地址
查看>>
python selenium webdriver入门基本操作
查看>>
css-css权威指南学习笔记1
查看>>
NOIP2001 一元三次方程求解[导数+牛顿迭代法]
查看>>
【Linux】find grep 联合使用 过滤所有子目录、文件
查看>>
Create Hierarchical Tree To Control Records In Oracle Forms
查看>>
mysql没有delete操作,那是delete from操作,
查看>>