文档章节

ActionBar中ShareActionProvider简单使用

初来小修
 初来小修
发布于 2016/02/03 19:57
字数 438
阅读 30
收藏 0

//功能:点击中间机器人图标打开图库 然后选中要分享的图片

//在点击选择菜单分享图标 分享到需要分享的地方


效果示例图:







1、选择菜单  share_menu.xml 布局

代码


<?xml version="1.0" encoding="utf-8"?>

<menu xmlns:android="http://schemas.android.com/apk/res/android" >


    <item

        android:id="@+id/actionprovider"

        android:actionProviderClass="android.widget.ShareActionProvider"

        android:showAsAction="always"

        android:title=""/>


</menu>




===================


2、主布局activity_main.xml


代码


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    tools:context="${relativePackage}.${activityClass}" >


    <TextView

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="@string/hello_world" />

    

    

    <ImageView

        android:id="@+id/imageview"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:src="@drawable/ic_launcher" 

        android:layout_centerInParent="true"

        android:onClick="onclickImage"/>


</RelativeLayout>



==============


3、MainActivity类


代码

public class MainActivity extends Activity {


private ShareActionProvider provider;

private ImageView imageView;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

this.imageView = (ImageView) this.findViewById(R.id.imageview);

}

//图片点击事件监听

public void onclickImage(View view){

Intent intent = new Intent();

intent.setAction(Intent.ACTION_GET_CONTENT);//打开图库的动作设置

intent.setType("image/*");

int requestCode = 1;

startActivityForResult(intent, requestCode );

}

//打开图库后选择图片后的回调方法

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

super.onActivityResult(requestCode, resultCode, data);

if(requestCode == 1 && resultCode == Activity.RESULT_OK){

Uri uri = data.getData();

try {

ContentResolver resolver = getContentResolver();

InputStream is = resolver.openInputStream(uri);

Bitmap bitmap = BitmapFactory.decodeStream(is);

imageView.setImageBitmap(bitmap);

} catch (Exception e) {

e.printStackTrace();

}

//设置分享的数据和类型

Intent intent = new Intent();

intent.setAction(Intent.ACTION_SEND);

intent.setType("image/*");

intent.putExtra(Intent.EXTRA_STREAM, uri);

//通过setShareIntent方法设置要分享的数据

provider.setShareIntent(intent);

}

}

//创建一个选择菜单

@Override

public boolean onCreateOptionsMenu(Menu menu) {

getMenuInflater().inflate(R.menu.share_menu, menu);

/*//文本分享

shareTxt(menu);*/

//分享图片

shareImg(menu);

return super.onCreateOptionsMenu(menu);

}

private void shareImg(Menu menu) {

MenuItem item_provider = menu.findItem(R.id.actionprovider);

   provider = (ShareActionProvider) item_provider.getActionProvider();

}

/*//分享文本的方法

public void shareTxt(Menu menu) {

MenuItem item_provider = menu.findItem(R.id.actionprovider);

   provider = (ShareActionProvider) item_provider.getActionProvider();

   

   Intent intent = new Intent();

   intent.setAction(Intent.ACTION_SEND);

   intent.setType("text/plain");

   intent.putExtra(Intent.EXTRA_TEXT, "这是文本信息");

  //用ShareActionProvider发送意图

   provider.setShareIntent(intent);

}*/

}


© 著作权归作者所有

共有 人打赏支持
初来小修
粉丝 4
博文 117
码字总数 80711
作品 0
广州
Exception: This is not supported, use MenuItemCompat.getActionProvider()的处理

今天在学习在ActionBar上添加分享功能时,按照文档的写法,报了一个错误 下面是我抄来的代码: menu_main.xml: MainActivity.java: 如果这样直接运行起来,会报错,报错内容如下: MainActivi...

neumeng
2016/09/08
73
0
Android UI开发第二十四篇——Action Bar

Android UI开发第二十四篇——Action Bar 标签: ActionBarandroidfragmentmenu 2012-10-31 16:11 143916人阅读 评论(29) 收藏 举报 分类: 上图中: logo title icon 目录(?)[+] Action bar...

微笑的江豚
2016/04/07
61
0
Android ActionBar详解

关于ActionBar,相信大家并不陌生,但是真正能够熟练使用的也不是很多,这篇文章主要为大家详细介绍ActionBar的相关知识,ActionBar是在Android3.0中引入的概念,所以在2.x系统中使用ActionBar...

恰同学少年
2015/08/03
0
0
csumissu/FakeWeChat

FakeWeChat 仿微信 界面高仿微信,数据来自新浪微博API。 仅供大家学习交流,不得用于商业用途。 项目简述 项目采用MVP-Rxjava设计模式,完全Material Design风格,实现了微信的部分界面功能...

csumissu
2016/07/22
0
0
Android Action Bar

http://blog.csdn.net/yuxlong2010/article/details/9299507 Action Bar讲的够详细啦! 关于ShareActionProvider: 1。分享文字:http://www.tuicool.com/articles/mAR7Zb Intent intent = ......

当空皓月
2014/11/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring Boot 入门 - 进阶篇(4)- REST访问(RestTemplate)

经常需要发送一个GET/POST请求到其他系统(REST API),通过JDK自带的HttpURLConnection、Apache HttpClient、Netty 4、OkHTTP 2/3都可以实现。 HttpClient的使用:http://rensanning.iteye.c...

onedotdot
18分钟前
1
0
Wi-Fi也有版本号了!

据Solidot消息,行业组织 Wi-Fi 联盟宣布当前的版本 Wi-Fi 802.11ac 重命名为 Wi-Fi 5,而下一个版本 802.11ax 重命名为 Wi-Fi 6,之前的版本 802.11n 改名为 Wi-Fi 4。 Wi-Fi 标准之前使用单...

linux-tao
19分钟前
3
0
项目经验不丰富、技术不突出的程序员怎么打动面试官?

前言 相信不少的程序员都有过类似的困惑:如果我没有大型的项目经历,也不能靠技术征服面试官,那我要怎么才能给面试官留下一个好印象呢? 按照本人的面试经验来说,面试主要看几点:项目经验...

Mamba1
30分钟前
2
0
MyBatis 源码分析----MyBatis 整体架构概要说明

MyBatis整体架构 MyBatis的整体架构分为三层1:基础支持层,2:核心处理层,3:接口层 1:基础支持层: 1-1反射模块: 该模块对Java 原生的反射进行了良好的封装,提供了更加简洁易用的API ,...

西瓜1994
35分钟前
6
0
如何让 J2Cache 在多种编程语言环境中使用

现在的系统是越来越复杂了,不仅仅是功能复杂,系统结构也非常复杂,而且经常在一个系统里包含几种不同语言编写的子系统。例如用 JavaScript 做前端开发、用 Java/PHP 等等做后端,C/C++/Go ...

红薯
37分钟前
46
1

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部