[Android] 一个将当前屏幕保存为图片文件的类(简单说就是抓屏)

来源:互联网 发布:阿里云架构 java 编辑:程序博客网 时间:2024/06/06 22:45

现在无论是应用,还是游戏中,都经常会有分享的功能。分享,不仅要分享文字,也要分享应用或者游戏的屏幕截图,这样才能做到图文并茂,吸引到更多的用户。

想要做图片的分享功能,首先就需要抓屏,将当前屏幕保存为一个图片文件。

下面就是一个将当前的Activity直接保存为一个图片文件的类库,可以直接使用。需要的,直接拿来主义就好了。


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是你需要截图的ViewView 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);}}


原创粉丝点击