zoukankan      html  css  js  c++  java
  • Android

    ActionBar上使用ActionProvider实现一个高效的友好的分享操作在Android 4.0(API等级14)上更容易了。一个ActionProvider,一旦附加到action bar的菜单上了,就会处理外观和行为上的操作,至于ShareActionProvider,你值需要提供分享intent,然后它会完成剩下的事情。

    注意:ShareActionProvider从API等级14以及更高版本中可用。

    更新菜单的声明

    要使用ShareActionProviders,在菜单资源文件中为相应的<item>定义android:actionProviderClass属性:

    1 <menu xmlns:android="http://schemas.android.com/apk/res/android">
    2     <item android:id="@+id/menu_item_share"
    3         android:showAsAction="ifRoom"
    4         android:title="Share"
    5         android:actionProviderClass="android.widget.ShareActionProvider" />
    6     ...
    7 </menu>

    这个代表了ShareActionProvider的外观和功能。但是,你仍然需要告诉provider你需要分享什么。

    图1.Gallery app中的ShareActionProvider

    设置分享Intent

     

    为了让ShareActionProvider能运行,需要提供一个分享intent。这个分享intent应该和前面讲的一致,带有ACTION_SEND操作和附加的数据,像EXTRA_TEXT或EXTRA_STREAM。要分配一个分享intent,在加载菜单资源时首先要找到相应的MenuItem。接下来,调用MenuItem.getActionProvider()来获得ShareActionProvider实例。使用setShareIntent()来更新相关的分享intent。这里有一个例子:

     1 private ShareActionProvider mShareActionProvider;
     2 ...
     3 
     4 @Override
     5 public boolean onCreateOptionsMenu(Menu menu) {
     6     // 加载菜单资源文件
     7     getMenuInflater().inflate(R.menu.share_menu, menu);
     8 
     9     // 用ShareActionProvider定位MenuItem
    10     MenuItem item = menu.findItem(R.id.menu_item_share);
    11 
    12     // 获取并存储ShareActionProvider
    13     mShareActionProvider = (ShareActionProvider) item.getActionProvider();
    14 
    15     // 然后true来显示菜单
    16     return true;
    17 }
    18 
    19 // 调用来更新share intent
    20 private void setShareIntent(Intent shareIntent) {
    21     if (mShareActionProvider != null) {
    22         mShareActionProvider.setShareIntent(shareIntent);
    23     }
    24 }

    你可能需要设置一次share intent来创建自己的菜单,或者在UI改变时设置并更新它。比如,当才Gallery app中全屏查看照片时,sharing intent会在照片切换时改变。

    更多关于ShareActionProvider的信息, 查看Action bar介绍。

     

     

     

     

  • 相关阅读:
    ThreadLocal总结
    zookeeper学习笔记
    安装solr
    VirtualBox安装Centos7
    Solr学习
    Redis缓存会出现的问题?
    面试题目总结
    mysql分库分表
    Java内存模型
    HashMap在多线程中循环链表问题(jdk1.7)
  • 原文地址:https://www.cnblogs.com/fengquanwang/p/3148817.html
Copyright © 2011-2022 走看看