package com.wangzhen.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 bitmap = view.getDrawingCache();
// 获取状态栏高度
Rect rect = new Rect();
activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(rect);
int statusBarHeight = rect.top;
// 获取屏幕长和高
int width = activity.getWindowManager().getDefaultDisplay().getWidth();
int height = activity.getWindowManager().getDefaultDisplay()
.getHeight();
// 去除标题栏
Bitmap bitmap_final = Bitmap.createBitmap(bitmap, 0, statusBarHeight,
width, height - statusBarHeight);
view.destroyDrawingCache();
return bitmap_final;
}
// 保存截图
private static void savePic(Bitmap bitmap, File filepath) {
FileOutputStream fileOutputStream = null;
try {
fileOutputStream = new FileOutputStream(filepath);
if (null != fileOutputStream) {
bitmap.compress(Bitmap.CompressFormat.PNG, 100,
fileOutputStream);
fileOutputStream.flush();
fileOutputStream.close();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println(e.getMessage());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// 外部进行调用的方法
public static void shoot(Activity activity, File filePath) {
if (filePath == null) {
return;
}
if (!filePath.exists()) {
filePath.getParentFile().mkdir();
}
ScreenShot.savePic(ScreenShot.takeScreenShot(activity), filePath);
}
}
Android截屏关键代码
最新推荐文章于 2024-09-02 18:19:21 发布