android 截屏 分享,Android应用内截图分享的实现记录
Android应用内截图分享的实现记录
近期的项目中有个需求,需要将某个表示用户身份的页面整个截取下来,分享到微信微博。网上也很多的解决方案,我也分享下我自己的爬坑记录。
需求分析
有个页面,用于展示用户获得的成就(主要是装逼)。产品狗狗肯定希望通过sns渠道,把这种装逼手段扩散出去形成口碑。要求很简单,就将这个页面整个截取下来保存成图片,用sns的sdk分享出去。这里就有两种情况:
页面可见的情况下截图分享;
页面不可见的情况下截图分享.
第一种情况很容易解决,而第二种因为页面不可见,就有点蛋疼。
当然,不可能因为两种情况就写两种截取方式。那么应该怎么实现呢?
实现方案
因为涉及到文件存储,那么必然,在保存的过程中肯定不应该放到主线程操作,不然就很容易阻塞UI。又因为涉及到Bitmap的生成,那么我们得考虑下内存使用的问题。整个流程应该是这样->:
展示View
将View转成Bitmap
将Bitmap写入SD卡
返回写入文件的路径
我们另起一个Activity,将其设为透明的主题样式,将要截取的View动态add到Activity之中(当然也可以写在Activity的布局文件中)并将其设为INVISIBLE状态,现在这个View就已经呈现在我们眼前,只是我们看不到而已。这个时候就可以开始截图啦。我将View转为Bitmap的方法也是网上找的
public static Bitmap convertViewToBitmap(View view) {
Bitmap bitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(),
Bitmap.Config.RGB_565);
//利用bitmap生成画布
Canvas canvas = new Canvas(bitmap);
//把view中的内容绘制在画布上
view.draw(canvas);
return bitmap;
}
将Bitmap写入SD卡的方法:
public static void saveMyBitmap(Bitmap bitmap, String path) {
File f = new File(path);
FileOutputStream fOut = null;
try {
fOut = new FileOutputStream(f);
} catch (FileNotFoundException e) {
e.printStackTrace();
return;
}
bitmap.compress(Bitmap.CompressFormat.PNG, 80, fOut);
try {
fOut.flush();
fOut.close();
} catch (IOException e) {
e.printStackTrace();
}
}
最后Activity调用setResult返回保存的文件地址并关闭Activity后,整个流程就结束了啵
到这里,我们要实现的目的已经达到了。有没有可以优化的地方?那肯定有!最直接的优化方案就是将这个Actvity放在独立进程操作,完成之后推出进程就OK了!
android 截屏 分享,Android应用内截图分享的实现记录相关推荐
- 三星 android截屏快捷键,三星C5怎么截图/截屏 三星C5截图快捷键与手掌截屏方法...
三星C5怎么截屏?截图作为一项手机常用操作功能,很多朋友都需要用到.虽然三星C5内置了多种截屏方法,包括快捷键截屏.智能截屏以及手掌截屏等,不过依旧有很多新手朋友不太了解,下面本文主要分享3种三星C5 ...
- 三星 android截屏快捷键,安卓手机怎么截图 各大品牌快捷键截屏大集合
1三星手机快捷键截屏操作 同时按住三星手机的home键与电源开关键不动,等待1-2秒,界面就被截屏下来了. 2华为手机快捷键截屏操作 同时按住华为手机音量减键与电源开关键不动,等待1-2秒,界面就被截 ...
- android 截屏工具,Android带壳截图工具:Screener
原标题:Android带壳截图工具:Screener 有时候我们需要对手机屏幕截图并添加到设备的外壳,让截图看上去更加的具有设计感,能带壳截图的工具有很多,比如一些国内的手机助手都可以完成这个工作,不 ...
- android 截屏 效率,android 截屏以及对该图进行模糊
由于项目中用得比较多的两个功能 截图 和 模糊,我就整理成一个项目来概述. 一 .截图 核心代码 View.setDrawingCacheEnabled(true); View.buildDrawin ...
- Android 截屏监听(截图分享功能实现)
具体来说就是,检测到了用户在应用内有截图,弹出一个分享界面, 在截图下方添加一个二维码,进行分享. ●●● 前言 Android系统没有直接对截屏事件监听的接口,也没有广播,只能自己动手来丰衣足食, ...
- Android截屏分享
最近项目需要实现Android截屏分享功能,包括Android截屏获取图片.将图片保存到本地.通知系统相册更新.通过微信.QQ.微博分享截屏图片,本篇博客作为总结回顾. 一.Android截屏获取图片 ...
- Android截屏截图的几种方法总结
Android截屏 Android截屏的原理:获取具体需要截屏的区域的Bitmap,然后绘制在画布上,保存为图片后进行分享或者其它用途 一.Activity截屏 1.截Activity界面(包含空白的 ...
- android盒子截图,Android截屏截图的几种方法总结
Android截屏 Android截屏的原理:获取具体需要截屏的区域的Bitmap,然后绘制在画布上,保存为图片后进行分享或者其它用途 一.Activity截屏 1.截Activity界面(包含空白的 ...
- Android截屏截图方法汇总(Activity、View、ScrollView、ListView、RecycleView、WebView截屏截图)
Android截屏 Android截屏的原理:获取具体需要截屏的区域的Bitmap,然后绘制在画布上,保存为图片后进行分享或者其它用途 一.Activity截屏 1.截Activity界面(包含空白的 ...
最新文章
- 计算机硬盘有usb借口吗,为什么移动硬盘不建议插在台式机前置USB接口上
- android phpmyadmin,从android studio向phpmyadmin添加数据时出现问题
- C#操作数据库,DataSet,DataGridView,更新数据库 [一] - ADO.NET入门之中
- box head上身旋转问题
- 工作思想的转变_转变成以员工为中心的工作场所的3个技巧
- 大侠学java之继承
- 杭电OJ分类题目(4)-Graph
- BZOJ2820:YY的GCD
- 没有什么不可能!郴州女孩江梦南,从双耳失聪到清华博士!
- 关于多线程编程您不知道的5 件事---有关高性能线程处理的微妙之处 (转)
- SpringBoot 整合 JPA
- 【Linux下载安装jdk8】
- ReactNative配合node.js实现的公司通讯录管理app
- sp导出法线_sp导出贴图步骤_sp导出贴图
- bootstrap第三章:基本的BootstrapCSS
- 沈小滨 项目管理中的领导力
- Linux电源管理(五)thermal【转】
- mysql-python:_mysql.c(42) : fatal error C1083: Cannot open include file: 'config-win.h' 非权威指南
- Ubuntu 22.04 x86_64 OVF (sysin)
- 设计师 VS 装修工
热门文章
- 火柴人小程序linux,火柴人手绘小程序
- linux mint php mysql_Installing LAMP (Linux, Apache, MySQL and PHP) On Linux Mint
- 《坐热板凳》第五次作业:团队项目需求改进与系统设计
- BZOJ2658 ZJOI2012 小蓝的好友(treap)
- Azure PaaS服务密钥的安全性
- ajax提交表单序列化(serialize())数据
- 一个农民矿工的悲情遗书
- Oracle 学习笔记(四) Oracle表空间和数据文件
- 3G牌照发放脚步渐近 三大运营商提速布局3G
- angular6 设置全局变量_angularjs 设置全局变量的3种方法