往期传送门:

  Android+Sqlite 实现古诗阅读应用(一)  

  Android+Sqlite 实现古诗阅读应用(二)

  加入截图分享的功能。

   很多应用都有分享的功能,我也想在我的古诗App里加入这个功能,单纯的发送文字看起来太逊了,我决定模仿UC浏览器那样发送古诗的截图,使用官方的分享需要授权KEY,太过麻烦所以打算使用系统的分享。

   1.在meau里添加这个item:

  1. <item
  2. android:id="@+id/menu_item_share"
  3. android:showAsAction="ifRoom"
  4. android:title="分享"
  5. />

   

   2.新建全局变量Intent:

   

  1. private void setshare(){
  2. sendIntent = new Intent();
  3. sendIntent.setAction(Intent.ACTION_SEND);
  4. sendIntent.putExtra(Intent.EXTRA_STREAM, shot());
  5. sendIntent.setType("image/jpeg");
  6. }

  然后在meau的onOptionsItemSelected()方法里设置按下运行setshare()方法,新建一个intent,设置活动为send,然后传入的参数,是一个图片的uri通过shot生成。

  

  1. private Uri shot() {
  2. View view = getWindow().getDecorView();
  3. Display display = this.getWindowManager().getDefaultDisplay();
  4. view.layout(0, 0, display.getWidth(), display.getHeight());
  5. view.setDrawingCacheEnabled(true);//允许当前窗口保存缓存信息,这样getDrawingCache()方法才会返回一个Bitmap
  6.  
  7. Rect frame = new Rect();
  8. this.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);
  9. int statusBarHeight = frame.top;
  10. // 获取屏幕长和高
  11. int width = this.getWindowManager().getDefaultDisplay().getWidth();
  12. int height = this.getWindowManager().getDefaultDisplay()
  13. .getHeight();
  14. TypedArray actionbarSizeTypedArray = this.obtainStyledAttributes(new int[]{      //测量actionbar的宽度
  15. android.R.attr.actionBarSize});
  16. int h = (int)actionbarSizeTypedArray.getDimension(0, 0);
  17. Bitmap bmp = Bitmap.createBitmap(view.getDrawingCache(),0, statusBarHeight+h, width, height  //传入的几个参数分别为,数据源(要截的view),x轴坐标,y轴坐标,宽,长(屏幕-srarusbar-actionbar)
  18. - statusBarHeight-h);
  19. File f = new File(Environment.getExternalStorageDirectory(),      //写入文件流
  20. "output_image.jpg");
  21. FileOutputStream fOut = null;
  22. try {
  23. fOut = new FileOutputStream(f);
  24. } catch (FileNotFoundException e) {
  25. e.printStackTrace();
  26. }
  27. bmp.compress(Bitmap.CompressFormat.JPEG, 100, fOut);            
  28. try {
  29. assert fOut != null;
  30. fOut.flush();
  31. } catch (IOException e) {
  32. e.printStackTrace();
  33. }
  34. try {
  35. fOut.close();
  36. } catch (IOException e) {
  37. e.printStackTrace();
  38. }
  39. return Uri.fromFile(f);                           //返回生成的文件的URI
  40. }

  然后:

  

  1. case R.id.menu_item_share:
  2. setmShareActionProvider();
  3. startActivity(Intent.createChooser(sendIntent,"图片"));
  4. break;

  设置点击启动,就大功告成了,我们就能截到图片,而且没有actionbar和statusbar的干扰了。

  

      发送了图片

      接收到图片

    

  嗯,有朋友反映之前的一篇内容太多了,看代码感觉特别乱,这次的就减少了很多,不过这个小功能虽然小,但是还是很有用的,很多东西都会用到截图分享的功能哦。

  喜欢的请点赞吧!!!

  

Android+Sqlite 实现古诗阅读应用(三)的更多相关文章

  1. Android+Sqlite 实现古诗阅读应用(二)

    传送门:Android+Sqlite 实现古诗阅读应用(一) Hi,又回来了,最近接到很多热情洋溢的小伙伴们的来信,吼开心哈,我会继续努力的=-=! 上回的东西我们做到了有个textview能随机选择 ...

  2. Android+Sqlite 实现古诗阅读应用(一)

    不说网络app,很多本地的app都有一些随机的内容推送,比如随机推送一些小知识,古诗,名言名画什么的,界面制作的好看一点就能看起来特别的文艺范, 最近就是看了这样的一些应用,就想自己实现一下,这种方法 ...

  3. 【原】FMDB源码阅读(三)

    [原]FMDB源码阅读(三) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 FMDB比较优秀的地方就在于对多线程的处理.所以这一篇主要是研究FMDB的多线程处理的实现.而 ...

  4. Android SQLite总结(一) (转)

    Android SQLite总结(一)  郑海波 2012-08-21 转载请声明:http://blog.csdn.net/nuptboyzhb/article/details/7891887 前言 ...

  5. Android SQLite 数据库详细介绍

    Android SQLite 数据库详细介绍 我们在编写数据库应用软件时,需要考虑这样的问题:因为我们开发的软件可能会安装在很多用户的手机上,如果应用使用到了SQLite数据库,我们必须在用户初次使用 ...

  6. [Learn Android Studio 汉化教程]第三章:使用 Android Studio 编程

    [Learn Android Studio 汉化教程]第三章:使用 Android Studio 编程 本章包含如何在 Android Studio 中书写或生成代码. Android Studio ...

  7. Android SQLite 数据库 增删改查操作

    Android SQLite 数据库 增删改查操作 转载▼ 一.使用嵌入式关系型SQLite数据库存储数据 在Android平台上,集成了一个嵌入式关系型数据库--SQLite,SQLite3支持NU ...

  8. Android SQLite总结[转载]

    [转载] :http://blog.163.com/zqy216_2008/blog/static/4119371820119954812509/ 最近在做的项目涉及到了SQLite,大学时没有好好学 ...

  9. Android SQLite与ListView的简单使用

    2017-04-25 初写博客有很多地方都有不足,希望各位大神给点建议. 回归主题,这次简单的给大家介绍一下Android SQLite与ListView的简单使用sqlite在上节中有介绍,所以在这 ...

随机推荐

  1. toastr 自定义提示

    在线实例 实例演示 使用方法 <button type="button" class="btn btn-primary" id="showtoa ...

  2. 20个免费的 JavaScript 游戏引擎分享给开发者

    这篇文章收集了20个免费的 JavaScript 游戏引擎分享给开发者.这些游戏引擎能够帮助游戏开发人员更快速高效的开发出各种好玩的游戏. 使用 HTML5.CSS3 和 Javascript 可以帮 ...

  3. css命名书写规范小结。

    单行形式书写风格的排版约束 1.   每一条规则的大括号 { 前后加空格 2.   多个selector共用一个样式集,则多个selector必须写成多行形式 3.   每一条规则结束的大括号 } 前 ...

  4. ftp安全设置

    1.文件介绍 /etc/pam.d/vsftpd中ftpuser.user_list文件说明:(在file=后添加改文件路径)/etc/vsftpd.conf中userlist_enable.user ...

  5. mysql不同版本和存储引擎选型的验证

    Mysql的版本和存储引擎较多,为了选择最适合业务使用的系统,需要进行一定的验证,本文描述mysql的验证过程和思路. 主要涉及: Mysql的版本 v Mariadb v Tokudb v Orac ...

  6. 关于iOS中的时间

    两类 绝对时间 [NSDate date].CFAbsoluteTimeGetCurrent(),或者gettimeofday(). 返回的是从某一个时刻开始,度过的秒数.会随着用户设置的系统时间更改 ...

  7. Activity与Service进行数据交互

    Android启动Service有两种方法,一种是startService,一种是bindService.生命周期如下: 执行startService时,调用者如果没有stopService,Serv ...

  8. Android 手机卫士--home界面布局

    本文实现当从splash界面进入hone界面的时候,产生一种渐进淡入的动画效果,在onCreate中调用一个方法initAnimation(),代码如下: /** * 添加淡入的动画效果 */ pri ...

  9. Android 使用xml序列化器生成xml文件

    在<Android 生成xml文件>一文中使用流的形式写入xml格式文件,但是存在一定的问题,那就是在短信内容中不能出现<>之类的括号,本文使用xml序列化器来解决 xml序列 ...

  10. 【代码笔记】iOS-浮动的云

    一,效果图. 二,工程图. 三,代码. RootViewController.h #import <UIKit/UIKit.h> @interface RootViewController ...