Android开发 屏幕截图
此方法是通过view的方式获取当前activity的屏幕截图相对简单容易理解。
首先通过下面的函数获取Bitmap格式的屏幕截图:
1 public Bitmap myShot(Activity activity) {2 // 获取windows中最顶层的view3 View view = activity.getWindow().getDecorView();4 view.buildDrawingCache();5 6 // 获取状态栏高度7 Rect rect = new Rect();8 view.getWindowVisibleDisplayFrame(rect);9 int statusBarHeights = rect.top;
10 Display display = activity.getWindowManager().getDefaultDisplay();
11
12 // 获取屏幕宽和高
13 int widths = display.getWidth();
14 int heights = display.getHeight();
15
16 // 允许当前窗口保存缓存信息
17 view.setDrawingCacheEnabled(true);
18
19 // 去掉状态栏
20 Bitmap bmp = Bitmap.createBitmap(view.getDrawingCache(), 0,
21 statusBarHeights, widths, heights - statusBarHeights);
22
23 // 销毁缓存信息
24 view.destroyDrawingCache();
25
26 return bmp;
27 }
得到bitmap格式的图片后,可以把它保存到sd卡中,也可以用下面的方式直接显示到ImageView上:
1 // 将bitmap转换成drawable
2 BitmapDrawable bd=new BitmapDrawable(myShot());
3
4 imageView.setBackgroundDrawable(bd);
5
6 imageView.setImageBitmap(myShot());
如果想写入sd中保存,可以使用下面的方法:
1 private void saveToSD(Bitmap bmp, String dirName,String fileName) throws IOException {2 // 判断sd卡是否存在3 if (Environment.getExternalStorageState().equals(4 Environment.MEDIA_MOUNTED)) {5 File dir = new File(dirName);6 // 判断文件夹是否存在,不存在则创建7 if(!dir.exists()){8 dir.mkdir();9 }
10
11 File file = new File(dirName + fileName);
12 // 判断文件是否存在,不存在则创建
13 if (!file.exists()) {
14 file.createNewFile();
15 }
16
17 FileOutputStream fos = null;
18 try {
19 fos = new FileOutputStream(file);
20 if (fos != null) {
21 // 第一参数是图片格式,第二个是图片质量,第三个是输出流
22 bmp.compress(Bitmap.CompressFormat.PNG, 100, fos);
23 // 用完关闭
24 fos.flush();
25 fos.close();
26 }
27 } catch (FileNotFoundException e) {
28 // TODO Auto-generated catch block
29 e.printStackTrace();
30 } catch (IOException e) {
31 // TODO Auto-generated catch block
32 e.printStackTrace();
33 }
34 }
35 }
dirName是输出的文件夹名称,filaName是输出的文件名,两者共同组成输出的路径,如“ /mnt/sdcard/pictures/shot.png”。还要注意在AndroidManifest中注册写入权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
注意每次截图需调用
view.destroyDrawingCache();
防止连续截图保存为同一图片.
Android开发 屏幕截图相关推荐
- 是否可以将Java 8用于Android开发?
本文翻译自:Is it possible to use Java 8 for Android development? Searching the web, it is not clear if Ja ...
- android 开发环境 配置和说明
1. 安装 java jdk 因为android 开发通用是java 语言.还有很多工具软件都是java开发,所以java 虚拟机和开发包必须有. http://www.oracle.com/tech ...
- android权限--android开发中的权限及含义(下)
android权限--android开发中的权限及含义(下) android.permission.ACCESS_CHECKIN_PROPERTIES ,读取或写入登记check-in数据库属性表的权 ...
- Android开发笔记(一百三十)截图和录屏
屏幕捕捉 Android5.0之后开放了屏幕捕捉的API,因此开发者便可以直接通过代码进行截图与录屏,而无需操作系统底层了.屏幕捕捉的功能由MediaProjectionManager媒体投影管理器实 ...
- Android开发笔记(一百一十三)测试工具
单元测试TestCase Android的sdk提供了对项目进行单元测试的功能,开发包的android.test下面便是专门用来单元测试的类.单元测试的作用是通过模拟文本输入和手势输入(如点击操作), ...
- 分享一个整理了很多Android开发工具类的链接AndroidUtilCode
https://github.com/Blankj/AndroidUtilCode API Activity相关→ActivityUtils.java→Demo isActivityExists : ...
- Android开发工具类集锦
概述 本人做android开发已有段日子了,在开发的过程中一直使用着工具类,包括别人已经封装好的工具类以及自己封装的工具类,本篇博客向大家介绍自己在开发过程中经常使用到的一些简单实用的工具类,在文章末 ...
- 2020最新Android开发中高级进阶书籍推荐
很多Android开发小伙伴进阶学习都是卖一堆技术书籍.这里整理了目前最主流的中级,高级进阶书籍.感兴趣可以收藏一下,作为一个参考~ 一,中级进阶推荐看一下以下这几本书: 中级进阶书籍相信大家很熟悉, ...
- (转)Android开发常用工具类
原地址:http://blog.csdn.net/axi295309066/article/details/52884973 不管是前端,后端,还是我们的Android开发,实际工作中都会用到很多的工 ...
最新文章
- RocketMQ(十一)——消费的幂等性
- TCP如何保障可靠性
- Windows 7程序开发系列之一(任务栏篇)
- oracle ora00020,ORA-00020: maximum number of processes (1000) 错误处理
- 浙大研究生hadoop工作分享
- 数据结构题集c语言版题目与答案,数据结构题集(C语言版)答案 - 严蔚敏编著...
- 去除PreferenceScreen过期提示
- DL for Scratch 读书笔记
- 二维码制作软件生成二维码时的参数设置
- C语言基础练习100--008(输出国际象棋棋盘)
- 渠道分销管理系统解决方案
- linux etc xdg,Xdg-menu (简体中文)
- 【图像去噪】基于matlab高斯+均值+中值+双边滤波图像去噪【含Matlab源码 1872期】
- 粉笔公考——方法精讲——资料分析
- mysql单元组多元组_CDA数据分析师-数据分析练习题2套
- 递归、迭代、分治、回溯、动态规划、贪心算法
- Cuteftp连接虚拟机Centos7
- 计算机专业的学生答辩稿,计算机专业毕业论文答辩自述稿范文
- PPT转成 Word文档的 4种方法
- 专治各种3D建模疑难杂症|学习之路畅通无阻