標籤(空格分隔): Android 菜單java
最近在作分享上一下事情,想遵照Android Design 規範作一個分享的菜單可是遇到一些問題android
最後權衡了知識和利弊以後只能作個簡單的分享類,在CreateMenu 的時候addSubMenu ,
而後在OnMenuOptionSelected() handle 操做就能夠了。app
代碼以下ide
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();