首页 > 代码库 > Android截屏关键代码

Android截屏关键代码

[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. package com.wangzhen.util;  
  2.   
  3. import java.io.File;  
  4. import java.io.FileNotFoundException;  
  5. import java.io.FileOutputStream;  
  6. import java.io.IOException;  
  7.   
  8. import android.app.Activity;  
  9. import android.graphics.Bitmap;  
  10. import android.graphics.Rect;  
  11. import android.view.View;  
  12.   
  13. public class ScreenShot {  
  14.   
  15.     // 进行截屏  
  16.     private static Bitmap takeScreenShot(Activity activity) {  
  17.         // view是将要截屏的view  
  18.         View view = activity.getWindow().getDecorView();  
  19.         view.setDrawingCacheEnabled(true);  
  20.         view.buildDrawingCache();  
  21.         Bitmap bitmap = view.getDrawingCache();  
  22.   
  23.         // 获取状态栏高度  
  24.         Rect rect = new Rect();  
  25.         activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(rect);  
  26.         int statusBarHeight = rect.top;  
  27.   
  28.         // 获取屏幕长和高  
  29.         int width = activity.getWindowManager().getDefaultDisplay().getWidth();  
  30.         int height = activity.getWindowManager().getDefaultDisplay()  
  31.                 .getHeight();  
  32.         // 去除标题栏  
  33.         Bitmap bitmap_final = Bitmap.createBitmap(bitmap, 0, statusBarHeight,  
  34.                 width, height - statusBarHeight);  
  35.         view.destroyDrawingCache();  
  36.         return bitmap_final;  
  37.     }  
  38.   
  39.     // 保存截图  
  40.     private static void savePic(Bitmap bitmap, File filepath) {  
  41.         FileOutputStream fileOutputStream = null;  
  42.         try {  
  43.             fileOutputStream = new FileOutputStream(filepath);  
  44.             if (null != fileOutputStream) {  
  45.                 bitmap.compress(Bitmap.CompressFormat.PNG, 100,  
  46.                         fileOutputStream);  
  47.                 fileOutputStream.flush();  
  48.                 fileOutputStream.close();  
  49.             }  
  50.         } catch (FileNotFoundException e) {  
  51.             // TODO Auto-generated catch block  
  52.             e.printStackTrace();  
  53.             System.out.println(e.getMessage());  
  54.         } catch (IOException e) {  
  55.             // TODO Auto-generated catch block  
  56.             e.printStackTrace();  
  57.         }  
  58.     }  
  59.   
  60.     // 外部进行调用的方法  
  61.     public static void shoot(Activity activity, File filePath) {  
  62.         if (filePath == null) {  
  63.             return;  
  64.         }  
  65.         if (!filePath.exists()) {  
  66.             filePath.getParentFile().mkdir();  
  67.         }  
  68.         ScreenShot.savePic(ScreenShot.takeScreenShot(activity), filePath);  
  69.     }  

Android截屏关键代码