Android---添加一个共享操作
2013-04-12 07:44
375 查看
本文译自:http://developer.android.com/training/sharing/shareaction.html
在你的ActionBar中实现一个有效的且对用户友好的共享操作,甚至比在Android4.0(API
Level 14)中引入的ActionProvider更加容易。ActionProvider一旦跟操作栏中的一个菜单项绑定,该菜单项会处理的外观和行为。在ShareActionProvider中,你提供一个共享的Intent对象,其他事情都会由ShareActionProvider来处理。
注意:ShareActionProvider在API Level 14以后有效。
更新菜单声明
要使用ShareActionProviders,就在你菜单资源文件中给对应的<item>元素定义android.actionProviderClass属性:
<menuxmlns: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>
这种委托负责该菜单项的外观和功能。但是你需要告诉该提供器你要共享的内容。
图1.图库(Gallery)应用中的ShareActionProvider。
设置共享的Intent对象
为了让ShareActionProvider指向一个功能,你必须给他提供一个共享的Intent对象。这个共享的Intent对象应该跟“把内容发送给其他应用程序”一课中介绍的相同,它带有ACTION_SEND操作,以及通过EXTRA_TEXT和EXTRA_STREAM附加属性设置的额外数据。要跟一个共享的Intent对象相关联,首先要找到你的Activity或Fragment对象填充菜单时多对应的MenuItem对象。接下来调用MenuItem.getActionProvider()方法来获取一个ShareActionProvider对象实例。使用setShareIntent()方法来更行跟操作项关联的共享的Intent对象。例如:
privateShareActionProvider 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);
}
}
在你菜单创建期间,你只需设置共享的Intent对象,或者是UI改变时来设置并更新它。例如,当在图库应用中全屏浏览照片时,共享的Intent会在照片间切换时发生变化。
有关ShareActionProvider对象的详细讨论,请看Action Bar指南。
在你的ActionBar中实现一个有效的且对用户友好的共享操作,甚至比在Android4.0(API
Level 14)中引入的ActionProvider更加容易。ActionProvider一旦跟操作栏中的一个菜单项绑定,该菜单项会处理的外观和行为。在ShareActionProvider中,你提供一个共享的Intent对象,其他事情都会由ShareActionProvider来处理。
注意:ShareActionProvider在API Level 14以后有效。
更新菜单声明
要使用ShareActionProviders,就在你菜单资源文件中给对应的<item>元素定义android.actionProviderClass属性:
<menuxmlns: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>
这种委托负责该菜单项的外观和功能。但是你需要告诉该提供器你要共享的内容。
图1.图库(Gallery)应用中的ShareActionProvider。
设置共享的Intent对象
为了让ShareActionProvider指向一个功能,你必须给他提供一个共享的Intent对象。这个共享的Intent对象应该跟“把内容发送给其他应用程序”一课中介绍的相同,它带有ACTION_SEND操作,以及通过EXTRA_TEXT和EXTRA_STREAM附加属性设置的额外数据。要跟一个共享的Intent对象相关联,首先要找到你的Activity或Fragment对象填充菜单时多对应的MenuItem对象。接下来调用MenuItem.getActionProvider()方法来获取一个ShareActionProvider对象实例。使用setShareIntent()方法来更行跟操作项关联的共享的Intent对象。例如:
privateShareActionProvider 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);
}
}
在你菜单创建期间,你只需设置共享的Intent对象,或者是UI改变时来设置并更新它。例如,当在图库应用中全屏浏览照片时,共享的Intent会在照片间切换时发生变化。
有关ShareActionProvider对象的详细讨论,请看Action Bar指南。
相关文章推荐
- Android官方文档---添加一个共享操作
- Android---添加一个共享操作
- Android 系列 6.6向操作栏添加共享操作
- 一个操作共享内存的类!可以方面的添加,删除数据,包括各种结构体!
- 一个操作共享内存的类!可以方便的添加,删除数据,包括各种结构体!
- 一个操作共享内存的类!可以方面的添加,删除数据,包括各种结构体!
- Android - 分享内容 - 添加一个简单的分享操作
- 一个操作共享内存的类!可以方面的添加,删除数据,包括各种结构体!
- Google Android开发者文档系列-创建有内容分享特性的应用之添加一个简单的共享action
- 为Android添加一个开机完成后执行的脚本
- [实践] Android5.1.1源码 - 为每个应用添加一个Content Provider
- 【Xamarin开发 Android 系列 12】 创建一个Json读取数据应用-添加定位服务
- Android 8.0系统上使用WindowManager添加view的一个问题
- Android开发—数据库应用—访问数据表(SQLite OpenHelper) —添加检索操作(Retrieve)
- Android学习杂记(一)单选框实现单选必须为每个RadioButton添加一个唯一的Id属性
- Adding an Easy Share Action 添加一个简单的共享行动
- C# PDF Page操作——设置页面切换按钮 C# 添加、读取Word脚注尾注 C#为什么不能像C/C++一样的支持函数只读传参 web 给大家分享一个好玩的东西,也许你那块就用的到
- 【Android游戏开发十六】Android Gesture之【触摸屏手势识别】操作!利用触摸屏手势实现一个简单切换图片的功能!
- android selector 简介(通过判断控件的不同状态为其添加背景等操作)
- Android 如何添加一个apk使模拟器和真机都编译进去 m