美文网首页
给 ActionBar 增加分享功能

给 ActionBar 增加分享功能

作者: TTTqiu | 来源:发表于2016-10-19 20:59 被阅读215次

Android4.0 之后系统中 ActionProvider 的引入使在 ActionBar 中添加分享功能变得更为简单。它会 handle 出现 share 功能的 appearance 与 behavior。在 ShareActionProvider 的例子里面,我们只需要提供一个 share intent,剩下的就交给 ShareActionProvider 来做。

1. 更新菜单声明

使用ShareActionProvider的第一步,在 menu resources 对应 item 中定义 android:actionProviderClass 属性。

    <menu xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:id="@+id/menu_item_share"
            android:showAsAction="ifRoom"
            android:title="Share"
            android:actionProviderClass="android.widget.ShareActionProvider" />
        ...
    </menu>

2. 设置分享的 intent

为了实现 ShareActionProvide r的功能,我们必须为它提供一个 intent。该 share intent 应该像第一课讲的那样,带有 ACTION_SEND 和附加数据(例如 EXTRA_TEXT 与 EXTRA_STREAM)的。使用 ShareActionProvider 的例子如下:

    private ShareActionProvider mShareActionProvider;
    ...

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate menu resource file.
        getMenuInflater().inflate(R.menu.share_menu, menu);

        // Locate MenuItem with ShareActionProvider
        MenuItem item = menu.findItem(R.id.menu_item_share);

        // Fetch and store ShareActionProvider
        mShareActionProvider = (ShareActionProvider) item.getActionProvider();

        // Return true to display menu
        return true;
    }

    // Call to update the share intent
    private void setShareIntent(Intent shareIntent) {
        if (mShareActionProvider != null) {
            mShareActionProvider.setShareIntent(shareIntent);
        }
    }

3. 去掉分享图标右边的最常分享应用图标

  • 如上设置后,分享图标右边会出现一个最常分享应用图标,因为会记录分享历史,并把最常分享的应用图标显示出来。
  • 可以如下设置,去掉这个图标:
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_news,menu);
        if(isFavourite){
            menu.findItem(R.id.menu_news_fav).setIcon(R.drawable.fav_selected);
        }

        MenuItem item=menu.findItem(R.id.menu_news_share);
        // 为了不在右边显示最常用应用图标。暂未出现问题。
        ShareActionProvider shareActionProvider=new ShareActionProvider(this){
            @Override
            public View onCreateActionView() {
                return null;
            }
        };
        MenuItemCompat.setActionProvider(item,shareActionProvider);
        shareActionProvider.setShareIntent(shareIntent);
        return true;
    }

相关文章

  • 给 ActionBar 增加分享功能

    Android4.0 之后系统中 ActionProvider 的引入使在 ActionBar 中添加分享功能变得...

  • 任务3:新建页面

    1. 在ActionBar增加“完成”项 我们用ActionBar按钮取代任务1中放置的临时进行“退出”和“完成”...

  • Android代码之路:ActionBar的使用

    ActionBar简介 ActionBar是安卓3.0以后新增的导航栏功能,用以代替传统屏幕顶端的标题栏。它标识了...

  • 微信小程序 --- 分享到朋友圈

    最近微信官方终于给小程序增加了分享到朋友圈的API,于是公司增加分享到朋友圈功能的需求就来了?... 根据官方文档...

  • 代码隐藏状态栏

    ActionBar actionbar=getSupportActionBar();if(actionbar !=...

  • cavas坐标原点

    代码 ActionBar存在时有ActionBar.PNG ActionBar不存在时无ActionBar.PNG

  • 抖音电商小知识

    1.什么是商品分享功能? 商品分享功能是指您可以在自己的视频和主页里分享商品的功能。开通此功能后,您的主页会增加“...

  • 装饰器模式

    装饰模式(给对象动态增加新功能,需持有对象实例):装饰模式就是给⼀个对象增加⼀些新的功能,⽽且是动态的,要求装饰对...

  • 给文章增加点赞功能

    https://www.xhcss.com/xh/dedecms/question/137.html

  • ActionBar方法

    ActionBar acrtionBar = getActionBar(); (1)actionBar.setHo...

网友评论

      本文标题:给 ActionBar 增加分享功能

      本文链接:https://www.haomeiwen.com/subject/jenxuttx.html