Android 一個將當前屏幕保存為圖片文件的類

jopen 10年前發布 | 30K 次閱讀 Android Android開發 移動開發

想要做圖片的分享功能,首先就需要抓屏,將當前屏幕保存為一個圖片文件。

下面就是一個將當前的Activity直接保存為一個圖片文件的Java類庫。
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);  
}  

} </pre>

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!