博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android开发 获取当前activity的屏幕截图
阅读量:6544 次
发布时间:2019-06-24

本文共 2133 字,大约阅读时间需要 7 分钟。

hot3.png

首先通过下面的函数获取Bitmap格式的屏幕截图:

public Bitmap myShot(Activity activity) {		// 获取windows中最顶层的view		View view = activity.getWindow().getDecorView();		view.buildDrawingCache();		// 获取状态栏高度		Rect rect = new Rect();		view.getWindowVisibleDisplayFrame(rect);		int statusBarHeights = rect.top;		Display display = activity.getWindowManager().getDefaultDisplay();		// 获取屏幕宽和高		int widths = display.getWidth();		int heights = display.getHeight();		// 允许当前窗口保存缓存信息		view.setDrawingCacheEnabled(true);		// 去掉状态栏		Bitmap bmp = Bitmap.createBitmap(view.getDrawingCache(), 0,				statusBarHeights, widths, heights - statusBarHeights);		// 销毁缓存信息		view.destroyDrawingCache();		return bmp;	}

得到bitmap格式的图片后,可以把它保存到sd卡中,也可以用下面的方式直接显示到ImageView上:

// 将bitmap转换成drawable        BitmapDrawable bd=new BitmapDrawable(myShot());        imageView.setBackgroundDrawable(bd);           imageView.setImageBitmap(myShot());

如果想写入sd中保存,可以使用下面的方法:

private void saveToSD(Bitmap bmp, String dirName,String fileName) throws IOException {	    // 判断sd卡是否存在	    if (Environment.getExternalStorageState().equals(	            Environment.MEDIA_MOUNTED)) {	    	File dir = new File(dirName);	    	// 判断文件夹是否存在,不存在则创建	    	if(!dir.exists()){	    		dir.mkdir();	    	}	    		        File file = new File(dirName + fileName);	        // 判断文件是否存在,不存在则创建	        if (!file.exists()) {	            file.createNewFile();	        }	 	        FileOutputStream fos = null;	        try {	            fos = new FileOutputStream(file);	            if (fos != null) {	                // 第一参数是图片格式,第二个是图片质量,第三个是输出流	                bmp.compress(Bitmap.CompressFormat.PNG, 100, fos);	                // 用完关闭	                fos.flush();	                fos.close();	            }	        } catch (FileNotFoundException e) {	            // TODO Auto-generated catch block	            e.printStackTrace();	        } catch (IOException e) {	            // TODO Auto-generated catch block	            e.printStackTrace();	        }	    }	}

dirName是输出的文件夹名称,filaName是输出的文件名,两者共同组成输出的路径,如/mnt/sdcard/pictures/shot.png。还要注意在AndroidManifest中注册写入权限:

转载于:https://my.oschina.net/neil173352/blog/308353

你可能感兴趣的文章
登录内网账号后,连接不上内网网址
查看>>
安装 MariaDB
查看>>
java 为啥变量名前要加个m?
查看>>
探索Android中的Parcel机制(上)
查看>>
C#开发微信门户及应用(5)--用户分组信息管理
查看>>
怎样实现前端裁剪上传图片功能
查看>>
ffmpeg+SDL2实现的视频播放器「退出、暂停、播放」
查看>>
2011/7/3 第二次评审
查看>>
tar解压
查看>>
inheritprototype原型继承封装及综合继承最简实例
查看>>
【磁耦隔离接口转换器】系列产品选型指南
查看>>
Apriori 关联算法学习
查看>>
MVPArms官方首发一键生成组件化,体验纯傻瓜式组件化开发
查看>>
Log4j_学习_00_资源帖
查看>>
制作iso镜像U盘自动化安装linux系统
查看>>
JSLint的使用
查看>>
命令行常用命令--软连接
查看>>
HTTP POST GET 本质区别详解
查看>>
MD5加密
查看>>
ant
查看>>