Android 获取屏幕截图

获取屏幕截图,就个人理解屏幕截图的过程如下:首先检索顶层窗口的装饰视图,然后启用绘图缓存,创建绘图缓存,获得绘图缓存,拿到屏幕的宽高,根据这些条件创建一个bitmap,释放绘图缓存的资源。

对于不包含状态栏的屏幕截图,需要拿到状态栏的高度,屏幕的高减去状态栏的高度再进行绘图即可。


/**
	 * 获取当前屏幕截图,不包含状态栏
	 * @param activity
	 * @return
	 */
	public static Bitmap screenShotWithoutStatusBar(Activity activity) {
		//通过window的源码可以看出:检索顶层窗口的装饰视图,可以作为一个窗口添加到窗口管理器
		View view = activity.getWindow().getDecorView();
		//启用或禁用绘图缓存
		view.setDrawingCacheEnabled(true);
		//创建绘图缓存
		view.buildDrawingCache();
		//拿到绘图缓存
		Bitmap bitmap = view.getDrawingCache();
		
		Rect frame = new Rect();
		activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);
		
		//状态栏高度
		int statusBarHeight = frame.top;
		int width = getScreenWidth(activity);
		int height = getScreenHeight(activity);
		
		Bitmap bp = null;
		bp = Bitmap.createBitmap(bitmap, 0, 0, width, height - statusBarHeight);
		view.destroyDrawingCache();
		return bp;
	}

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值