您的位置:首页 > 其它

当前屏幕保存为图片文件的类(getWindow().getDecorView())-----截屏

2015-06-06 22:54 459 查看
想要做图片的分享功能,首先就需要抓屏,将当前屏幕保存为一个图片文件

让我们一起来做做截屏



package com.gaolei.framework.android.util;



import java.io.File;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;



import android.app.Activity;

import android.graphics.Bitmap;

import android.graphics.Rect;

import android.view.View;



public class ScreenShot {



private static Bitmap takeScreenShot(Activity activity) {

// View是你需要截图的View

View view = activity.getWindow().getDecorView();

view.setDrawingCacheEnabled(true);

view.buildDrawingCache();

Bitmap b1 = view.getDrawingCache();



// 获取状态栏高度

Rect frame = new Rect();

activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);

int statusBarHeight = frame.top;



// 获取屏幕长和高

int width = activity.getWindowManager().getDefaultDisplay().getWidth();

int height = activity.getWindowManager().getDefaultDisplay()

.getHeight();

// 去掉标题栏

Bitmap b = Bitmap.createBitmap(b1, 0, statusBarHeight, width, height

- statusBarHeight);

view.destroyDrawingCache();

return b;

}



private static void savePic(Bitmap b, File filePath) {

FileOutputStream fos = null;

try {

fos = new FileOutputStream(filePath);

if (null != fos) {

b.compress(Bitmap.CompressFormat.PNG, 100, fos);

fos.flush();

fos.close();

}

} catch (FileNotFoundException e) {

// e.printStackTrace();

} catch (IOException e) {

// e.printStackTrace();

}

}



public static void shoot(Activity a, File filePath) {

if (filePath == null) {

return;

}

if (!filePath.getParentFile().exists()) {

filePath.getParentFile().mkdirs();

}

ScreenShot.savePic(ScreenShot.takeScreenShot(a), filePath);



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