Android实现截图分享qq,微信

立即下载

金额: 3 元

支付方式:

友情提醒:源码购买后不支持退换货

立即支付

发布时间:2018-05-23

概述

android上封装工具类,一行实现截屏分享到qq等第三方功能

详细

###前言

现在很多应用都有截图分享的功能,今天就来讲讲截图分享吧

今天涉及到以下内容:

1. android权限设置及申请

2. 截图分享功能解析

3. 截图分享功能的调用

4. 项目结构图和效果图

####一. android权限设置及申请

在实现截图分享功能的的时候,会涉及到读写权限的申请问题。

第一步,你需要在mainfast.xml中注册读写权限:

```

```

为了适应android6.0及以上手机的使用,我们最好也要加上6.0以上读写权限的申请。关于android6.0以上权限的申请,我之前封装过一个工具类,使得权限申请变得异常简单,有兴趣的同学可以看看我的另一篇文章:

[android权限申请Permission](http://www.demodashi.com/demo/12432.html)

这里就不做详细解释了。

####二.截图分享功能解析

#####2.1 原理

截屏分享的原理是首先获取当前屏幕的bitmap,然后将它生成图片文件保存到本地,接着调用分享功能,将它分享到你要分享的地方,下面做些讲解。

#####2.2 获取屏幕大小

在截屏开始的时候,需要获取屏幕的宽高:

```

DisplayMetrics dm = new DisplayMetrics();

WindowManager mWindowManager = (WindowManager) AppContext.getInstance().getSystemService(Context.WINDOW_SERVICE);

Display display = mWindowManager.getDefaultDisplay();

display.getMetrics(dm);

int width = dm.widthPixels;

int height = dm.heightPixels;

```

然后是获取屏幕的bitmap:

```

Bitmap bmp = view.getDrawingCache();

bp = Bitmap.createBitmap(bmp, 0, statusBarHeight, width, height - statusBarHeight);

```

获取bitmap之后,我们需要将bitmap保存到本地,保存之前,我们需要在手机上设置一个保存路径,sdard的判断必不可少:

```

if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {

return true;

}

return false;

```

在sdcard存在的情况下,获取手机内部缓存路径:

```

File cacheFile = AppContext.getInstance().getExternalCacheDir();

```

然后将bitmap保存到本地:

```

try {

// 图片文件路径

imagePath = getDiskCachePath()+"share.png";

LogUtil.i("====imagePath====" + imagePath);

File file = new File(imagePath);

FileOutputStream os = new FileOutputStream(file);

bitmap.compress(Bitmap.CompressFormat.PNG, 100, os);

os.flush();

os.close();

return imagePath;

} catch (Exception e) {

LogUtil.e("====screenshot:error====" + e.getMessage());

}

```

这一切搞定后,调用分享功能:

```

//分享

if(StringUtil.isNotEmpty(path)){

ShareImage(context,path);

}

```

以上是对截屏分享的一个原理流程介绍,代码显得有些杂乱,不过不要紧,我已经将这些代码整合成一个工具类ShotShareUtil,方便大家调用,下面看看ShotShareUtil在mainActivity中的调用吧

####三.截图分享功能的调用

直接给出MainActivity的代码吧,方便大家理解:

```

package com.android.testdemo.main;

import android.view.View;

import android.widget.Button;

import com.android.testdemo.R;

import com.android.testdemo.base.BaseActivity;

import com.android.testdemo.base.LogUtil;

import butterknife.BindView;

public class MainActivity extends BaseActivity{

@BindView(R.id.button1)

Button mBtnText;

@Override

protected int getContentViewId() {

return R.layout.activity_main;

}

@Override

protected void initData() {

//这里需要检测android6.0以上读写权限,关于权限申请我之前已经讲过,有需要的同学可以参考以下链接

//android6.0以上权限申请:http://www.demodashi.com/demo/12432.html

}

@Override

protected void setListener() {

mBtnText.setOnClickListener(this);

}

@Override

public void onClick(View v) {

super.onClick(v);

switch (v.getId()) {

case R.id.button1:

LogUtil.i("=====截屏分享====");

ShotShareUtil.shotShare(mContext);

break;

default:

break;

}

}

}

```

activity_main.xml文件中就布了一个按钮,方便测试:

```

```

最后给出项目结构图和效果图

####四.项目结构图和效果图

> 项目结构图

![项目效果图](/contentImages/image/20180523/8JnZ0jOemrsFCyyugCO.png "项目效果图")

> 运行效果图

![运行效果图](/contentImages/image/20180523/H74u4JjeAHcr3WeUT9g.gif)

android分享图片到qq,Android实现截图分享qq,微信相关推荐

  1. android 代码分享图片不显示,android原生分享图片失败的问题

    原生分享代码没有错,但是总是分享失败 Android分享图片的分享代码如下 public static void shareImages(Context context, ArrayList uriL ...

  2. android自定义图片加载,Android自定义ProgressDialog加载图片

    为了提高用户体验,我们肯定希望该Dialog能更加炫酷,让用户看着更舒服.那如何做呢,当然是我们自己定义一个ProgressDialog了. 一.使用系统加载框 mDialog = new Progr ...

  3. android imageview图片旋转动画,Android 安卓动画 属性动画 - 旋转动画

    引入 属性动画的出现,弥补了补间动画的不足之处,补间动画,只是改变了表面上的东西,但是其中属性并未改变,而属性动画相反,改变了表面上的东西,并且也更改了其属性. 类:ObjectAnimator 用于 ...

  4. android 矢量图片使用方法,Android中的矢量图

    概述 VectorDrawable是通过XML文件中的一系列点,线和曲线及其相关颜色信息定义的. 使用VectorDrawable的主要优点是图像可扩展性. 它可以缩放而不损耗显示质量,这意味着相同的 ...

  5. android 静态图片自动切换,Android静态图片人脸识别的完整demo(附完整源码)

    Android静态图片人脸识别的完整demo(附完整源码) 来源:互联网 作者:佚名 时间:2015-03-24 20:07 本文介绍了android静态识别人脸并进行标记人眼位置及人脸框的完整dem ...

  6. android设置图片 透明度渐变效果,android 自定义属性实现 ImageView 透明度渐变效果...

    先看效果图: 第一步: 在valuses下面自定义目录: 第二步: 自定义ImageView package com.jiaruihuademo.myattrimageview; import jav ...

  7. android都图片mat_普通Android码农,该如何逆袭月薪5W的移动端架构师?

    作为一名普通安卓码农,我相信大家都有一个成为移动端架构师的梦. 毕竟,安卓行业越来越内卷,这都是一个老生常谈的话题了.如今会写xml和Activity的程序员一抓一大把,如果你只是一名普通的安卓码农, ...

  8. android 自适应图片轮播,Android使用Recyclerview实现图片轮播效果的方法

    Android使用Recyclerview实现图片轮播效果的方法 发布时间:2020-06-23 15:47:58 来源:亿速云 阅读:113 作者:清晨 这篇文章将为大家详细讲解有关Android使 ...

  9. android显示图片部分区域,Android编程实现只显示图片一部分的方法

    本文实例讲述了Android编程实现只显示图片一部分的方法.分享给大家供大家参考,具体如下: 在Android应用程序中加载一张图片,然后把它显示出来这是一件非常容易的事情,那怎么才能显示一张图片的一 ...

  10. android 调用图片裁剪功能,Android图片裁剪,合成(调用系统裁剪功能)

    做照片相框 步骤就是跟美图秀秀一样,先截图,然后添加相框 在之前Bitmap.createBitmap那个文里,说过使用jpg图片会挡住底层图片,用画这种方法合成图片,没有问题. public cla ...

最新文章

  1. html中多边形图形怎么制作,CSS制作图形速查表
  2. python字典嵌套列表怎么访问值的某个元素_通过键列表访问嵌套字典项?
  3. IT职场人生系列之五:怎样面试
  4. ccs安装多版本编译器离线_windows 安装mysql多版本 主从复制
  5. Docker Centos安装 Openssh
  6. 如何在矩池云GPU云中安装MATLAB R2016b软件
  7. 【PAT乙】1001 害死人不偿命的(3n+1)猜想 (15分) 模拟,水水更健康
  8. Object.defineProperty 接口浏览器实现的bug.和疑惑
  9. Mybatis插入postgresql数据库中类型为UUID的字段
  10. ANSYS18的简略安装教程
  11. 画图相关 ppt visio 画图高清转移到word中
  12. Android实例(一)—— 3D画廊
  13. Linux家目录被误删除恢复
  14. Linux TC 流量限速
  15. 百度旋转验证码识别平台接口文档
  16. 环境搭建以及一些命令的记录
  17. Nemty 勒索软件代码中包含对杀毒软件公司的强烈措辞
  18. 【更新中21/31】NTIRE 2022 ESR(efficient super-resolution) 方案与结果
  19. Python基础,day2
  20. 计算机专业山东省内大学排名,山东计算机科学与技术专业大学排名 2020年省内录取分数线...

热门文章

  1. 50天计算机考研数学,50天数学冲刺:那些hold住高分的诀窍
  2. [java]深入剖析Java性能监控调优视频教程
  3. idea gwt 怎么编译_带Spring Boot的GWT
  4. 移动硬盘某个分区打不开,显示“文件或目录损坏且无法读取”的解决方法
  5. ESP32 下载与烧录最新固件
  6. 短信平台API接口demo示例-Node/SMS/Send
  7. 【ESXi中的群晖存储空间扩容】
  8. 测试上线邮件书写规范
  9. SpringBoot 2 访问 Neo4j 图数据库
  10. 10 个Web3 设计灵感网站