在Android开发中,有时候会遇到需要截屏分享到朋友圈或者QQ,截屏有截取当前屏幕,也有需要截取不仅一个屏幕,可能会很长。

截取当前屏幕并保存到内存卡的方法:

// 获取指定Activity的截屏,保存到png文件public static Bitmap takeScreenShot(Activity activity) {// View是你需要截图的ViewView view = activity.getWindow().getDecorView();view.setDrawingCacheEnabled(true);view.buildDrawingCache();Bitmap b1 = view.getDrawingCache();// 获取状态栏高度Rect frame = new Rect();activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);int statusBarHeight = frame.top;System.out.println(statusBarHeight);// 获取屏幕长和高int width = activity.getWindowManager().getDefaultDisplay().getWidth();int height = activity.getWindowManager().getDefaultDisplay().getHeight();// 去掉标题栏// Bitmap b = Bitmap.createBitmap(b1, 0, 25, 320, 455);Bitmap b = Bitmap.createBitmap(b1, 0, statusBarHeight, width, height- statusBarHeight);view.destroyDrawingCache();return b;}// 保存到sdcardpublic static void savePic(Bitmap b, String strFileName) {FileOutputStream fos = null;try {fos = new FileOutputStream(strFileName);if (null != fos) {b.compress(Bitmap.CompressFormat.PNG, 90, fos);fos.flush();fos.close();}} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}// 程序入口 截取当前屏幕public static void shootLoacleView(Activity a,String picpath) {ScreenShot.savePic(ScreenShot.takeScreenShot(a), picpath);}

当视图超过一个屏幕的时候,可能是listview,也可能是Scrollview,这时候,其实截图就是对listview或者Scrollview进行截图:

/*** 截取scrollview的屏幕* **/public static Bitmap getScrollViewBitmap(ScrollView scrollView,String picpath) {int h = 0;Bitmap bitmap;// 获取listView实际高度for (int i = 0; i < scrollView.getChildCount(); i++) {h += scrollView.getChildAt(i).getHeight();}Log.d(TAG, "实际高度:" + h);Log.d(TAG, " 高度:" + scrollView.getHeight());// 创建对应大小的bitmapbitmap = Bitmap.createBitmap(scrollView.getWidth(), h,Bitmap.Config.ARGB_8888);final Canvas canvas = new Canvas(bitmap);scrollView.draw(canvas);// 测试输出FileOutputStream out = null;try {out = new FileOutputStream(picpath);} catch (FileNotFoundException e) {e.printStackTrace();}try {if (null != out) {bitmap.compress(Bitmap.CompressFormat.PNG, 100, out);out.flush();out.close();}} catch (IOException e) {}return bitmap;}private static String TAG = "Listview and ScrollView item 截图:";/***  截图listview* **/public static Bitmap getListViewBitmap(ListView listView,String picpath) {int h = 0;Bitmap bitmap;// 获取listView实际高度for (int i = 0; i < listView.getChildCount(); i++) {h += listView.getChildAt(i).getHeight();}Log.d(TAG, "实际高度:" + h);Log.d(TAG, "list 高度:" + listView.getHeight());// 创建对应大小的bitmapbitmap = Bitmap.createBitmap(listView.getWidth(), h,Bitmap.Config.ARGB_8888);final Canvas canvas = new Canvas(bitmap);listView.draw(canvas);// 测试输出FileOutputStream out = null;try {out = new FileOutputStream(picpath);} catch (FileNotFoundException e) {e.printStackTrace();}try {if (null != out) {bitmap.compress(Bitmap.CompressFormat.PNG, 100, out);out.flush();out.close();}} catch (IOException e) {}return bitmap;}// 程序入口 截取ScrollViewpublic static void shootScrollView(ScrollView scrollView,String picpath) {ScreenShot.savePic(getScrollViewBitmap(scrollView, picpath), picpath);}// 程序入口 截取ListViewpublic static void shootListView(ListView listView,String picpath) {ScreenShot.savePic(getListViewBitmap(listView,picpath), picpath);}

截长图的效果图:

Demo在GitHub的地址:

https://github.com/Hebin320/ScreenShoot

Demo在CSDN上的下载地址:

http://download.csdn.net/detail/hebin320320/9721970

Android截图-截屏与截长图(二)相关推荐

  1. Android截屏与WebView长图分享经验总结【转】

    原文:https://youzanmobile.github.io/2017/05/19/android-screenshot-and-webview/ 最近在做新业务需求的同时,我们在 Androi ...

  2. Android 截屏与 WebView 长图分享经验总结

    最近在做新业务需求的同时,我们在 Android 上遇到了一些之前没有碰到过的问题,截屏分享. WebView 生成长图以及长图在各个分享渠道分享时图片模糊甚至分享失败等问题,在这过程中踩了很多坑,到 ...

  3. android 截长图 方法,Android实现截屏与截长图功能

    本文实例为大家分享了Android实现截屏与截长图功能展示的具体代码,供大家参考,具体内容如下 Demo在GitHub的地址:ScreenShoot 在Android开发中,有时候会遇到需要截屏分享到 ...

  4. Android实现截屏和截长图功能的几种方法

    一般情况下各种型号的手机都会有自带的截屏功能,也会有诸如"开关机键+音量键"的截屏快捷键,只要手机是亮屏状态,都会将手机屏幕的可视区域(包含状态栏)全部截取下来. 如果开发中想要调 ...

  5. Android 实现截屏和截长图功能的几种方法

    欢迎大家关注我的公众号:**牛角尖尖上起舞** 一般情况下各种型号的手机都会有自带的截屏功能,也会有诸如"开关机键+音量键"的截屏快捷键,只要手机是亮屏状态,都会将手机屏幕的可视区 ...

  6. Android实现截屏和截长图功能的各种方法

    微信好友或者朋友圈的分享,可以是普通的截图分享,也可以是截取长图的分享,甚至还会有需求让你拼上生成的二维码和logo图片,下面我们直接来看看这些方法的使用: 先说一下拼接三张不同的图片后有黑色背景的解 ...

  7. Android实现录屏和截屏功能

    Android实现录屏和截屏功能 1. MediaProjectionManager介绍 2.所需权限 3.示例代码 1. MediaProjectionManager介绍 用于获取screen ca ...

  8. Tools_@截屏工具@OCR识别工具@图片文字翻译工具长截屏,普通截屏套件推荐(by QQ)@鼠标键盘动作录制

    文章目录 Tools_@截屏工具@OCR识别工具@图片文字翻译工具长截屏,普通截屏套件推荐(QQ自带) 全局录屏/长截屏: OCR 优点 不足 quicker动作 鼠键录制工具

  9. android截屏快捷键 截屏工具 音量下键+电源键

    一般来说android手机或者平板,只要用两个手指同时按下:音量下键+电源键,一秒钟即可截屏,截屏图片保存到了/sdcard/Pictures/Screenshots文件夹下面.这个方法在nexus ...

  10. 苹果xr截屏怎么截_苹果系统截屏录屏+标记剪辑功能详解( iPhone/iPad/Mac)

    苹果系统中的截屏和录屏.标记和剪辑功能一如它的其他产品设计,做得非常细致.在我们日常的工作中,不免会遇到这些功能,今天小编就给大家详细讲解下苹果系统截屏录屏.标记剪辑功能,希望对大家有所帮助! 001 ...

最新文章

  1. 2字节取值范围_第二篇——整数和浮点数在计算机中的表示(2)
  2. 通俗易懂:贪心算法(三):习题练习 (力扣605种花问题、122买卖股票的最佳时机)
  3. 计算机用户删除 cmd,用命令行删XP中的用户。除administrator外
  4. MAVEN版本依赖的原则及scope
  5. 全球最大的AI创意梦工厂!2019中国高校计算机大赛-人工智能创意赛开始报名啦!...
  6. chown 和chgrp 软链接
  7. Linux 权限、磁盘操作命令-Linux基础环境命令学习笔记
  8. 计算机等级考试初级网络工程师,2019年全国计算机等级考试网络工程师四级,需..._网络编辑_帮考网...
  9. Myeclipse8.6安装freemarker插件
  10. 计算机基础(五):堆和栈区别
  11. mysql sys exec_mylab_sys_exec UDF调用mysql外部系统命令(For linux)
  12. 虎虎生威 | 年终盘点,好文合辑!
  13. windows存储空间清理,C盘空间清理教程,磁盘清理方法
  14. PTA---约分最简分式 (10 分)
  15. java flex 聊天_【转帖】实现了视频私聊功能
  16. 计算机科学家安内尔,历届诺贝尔生理学或医学奖获奖者简介
  17. 第一章 阿里大数据产品体系
  18. 基于FPGA数字时钟的设计(附源码)
  19. php活体检测,人脸门禁系统中活体检测的必要性
  20. STM32掌机教程7,演奏音乐

热门文章

  1. 使用BackTrack4清除/修改Windows用户密码
  2. spark 车流量项目实战
  3. 数据挖掘 顶级期刊_数据挖掘顶级期刊与会议
  4. 01背包问题c语言,遗传算法的0-1背包问题(c语言)
  5. 基于Socket网络编程基本步骤
  6. jsoup(java爬虫)
  7. VS2010过期密钥
  8. VS2013过期激活,VS2013激活,vs2013序列号,VS2013密钥,VS013产品密匙
  9. DNF私服单机搭建教程
  10. elasticjob disable JOB