您的位置:首页 > 移动开发 > Android开发

Android 获取屏幕截图

2016-02-15 14:09 525 查看
获取屏幕截图,就个人理解屏幕截图的过程如下:首先检索顶层窗口的装饰视图,然后启用绘图缓存,创建绘图缓存,获得绘图缓存,拿到屏幕的宽高,根据这些条件创建一个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;
}


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息