Android要实现屏幕截屏,可以有很多方法,这里主要介绍两种常用的方法。一种是通过DrawingCache来生成截图,另外一种是通过Canvas,将View的内容绘制到Bitmap上。

一、首先来看DrawingCache的使用方法。View控件上的内容可以通过cache机制保存为bitmap, 主要有以下方法:

void  setDrawingCacheEnabled(boolean flag),

Bitmap  getDrawingCache(boolean autoScale),

void  buildDrawingCache(boolean autoScale),

void  destroyDrawingCache()

首先要通过setDrawingCacheEnable方法开启cache,然后再通过getDrawingCache方法得到cache所保存的view对应的图片。buildDrawingCache方法可以不用调用,因为调用getDrawingCache方法时,若果cache没有建立,系统会自动调用buildDrawingCache方法生成cache。当调用setDrawingCacheEnabled方法设置为false, 系统也会自动把原来的cache销毁。

如果使用DrawingCache,则对要截图的View有一个要求:View本身已经显示在界面上。如果View没有添加到界面上或者没有显示过,则buildDrawingCache会失败。这种方式比较适合对应用界面或者某一部分的截图。步骤很简单:

view.setDrawingCacheEnabled(true);
view.buildDrawingCache();
Bitmap bitmap = Bitmap.createBitmap(view.getDrawingCache());
view.setDrawingCacheEnabled(false); 

如果需要对整个页面都截图,可以通过Activity的根视图来实现截屏,具体方法是调用getWindow().getDecorView(),然后通过对根View进行DrawingCache的相应操作来实现截屏。

二、 使用Canvas绘制的方式相对更简单一些,只需要三步就可以完成。

1、创建一个Bitmap对象作为绘制目标。

2、将Bitmap传递给Canvas做参数作为画布。

3、调用View的draw()方法将View的内容绘制的Canvas上。

具体的代码是这样子的:

Bitmap bitmap = Bitmap.createBitmap(mWidth, mHeight, Bitmap.Config.RGB_565);
Canvas canvas = new Canvas(bitmap);
view.draw(canvas);

欢迎关注我的公众号一起交流学习

Android实现截屏的方法相关推荐

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

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

  2. android webview 截图,Android获取webView快照与屏幕截屏的方法 -电脑资料

    前段时间做的一个书店项目其阅读模块中用到了WebView + js,今天把WebView这块用到的几个特性记录下, 其主要用到了webView的快照与屏幕的截屏.部分代码如下: [html] /** ...

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

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

  4. Android车载设备截屏方法

    现象: 现有Android平板电脑一台,是使用在公交车上的. 1.此设备没有电源键和音量键,所以也就没办法直接用传统的方法来截屏 2.安装易截屏.截屏大师等截屏软件,使用悬浮窗截屏时,也打不开悬浮窗截 ...

  5. Android系统截屏的实现(附代码)

    1.背景 写博客快两年了,写了100+的文章,最火的文章也是大家最关注的就是如何实现android系统截屏.其实我们google android_screen_shot就会找到很对办法,但那些都是很多 ...

  6. android后台截屏实现(2)--screencap源码修改

    首先找到screencap类在Android源码中的位置,/442/frameworks/base/cmds/screencap/screencap.cpp. 源码如下: [cpp] view pla ...

  7. android长截屏代码,android长截屏原理及实现代码

    android长截屏原理及实现代码 发布时间:2020-08-31 06:55:16 来源:脚本之家 阅读:158 作者:Android笔记 小米系统自带的长截屏应该很多人都用过,效果不错.当长截屏时 ...

  8. Android手机截屏

    对于android手机截屏,据我所知,现在主要有三种方法. 第一种,通过DDMS. 把手机连接上电脑,运行DDMS,选中你的手机设备,然后点击菜单"设备"->"Sc ...

  9. android关于截屏,关于android截屏知识的学习

    最近要做手机截取当前屏幕的开发,发了大半天时间在网上找了很多资料,终于有了一个大概的头绪和思路,若有问题望指点,谢谢! 目前而言个人了解android有三种截屏方法: 1.android SDK提供的 ...

最新文章

  1. MVP模式的相关知识
  2. ElasticSearch教程——汇总篇
  3. LBE 隐私卫士原理分析
  4. Linux shell 变量 数学 运算
  5. 这或许是实现重试最优雅的姿势了!
  6. 云计算呼叫中心_SaaS云呼叫中心系统只用于销售或客服?
  7. CSDN博客中删除空白代码块
  8. 实验三:凸包(输入点坐标计算凸包坐标)
  9. 深入React v16新特性(二)
  10. js获取ISO8601规范时间,使用UTC时间,格式为:YYYY-MM-DDThh:mm:ssZ
  11. python3.6安装步骤-Python 3.6.6安装教程(附安装包) | 我爱分享网
  12. 天敏的SDK2000
  13. 博图程序的归档和恢复
  14. 怎么能把Excel数据导入到这个水经注软件里?
  15. mapreduce 论文(中文翻译)
  16. Steam CMD是什么?Steam CMD怎么用?
  17. [源码解析] PyTorch 流水线并行实现 (6)--并行计算
  18. 02 【ArcGIS JS API + eCharts系列】实现二、三维迁徙图的绘制
  19. Verilog HDL语法提纲
  20. JavaScript事件——event对象事件冒泡 阻止默认行为事件捕获

热门文章

  1. Cortex M3处理器工作模式及中断过程
  2. 网络空间开源威胁情报分析的人机优化策略研究
  3. RichView TextBox Items 文本框
  4. 《数据库系统概念》8-选择、投影等关系运算
  5. 微信公众平台开发(15)--群发消息
  6. Oracle常用单词表
  7. QT实现浏览器访问网页,使用QWebEngineView
  8. 华为云灾备,让数据风险无处遁形
  9. java 拼音识别_JAVA实现汉字转拼音
  10. 在Android手机上安装Ubuntu完整版