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

来源:互联网 发布:手机编程工具 编辑:程序博客网 时间:2024/06/10 04:14

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

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

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


  1. package com.gaolei.framework.android.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.     private static Bitmap takeScreenShot(Activity activity) {  
  16.         // View是你需要截图的View  
  17.         View view = activity.getWindow().getDecorView();  
  18.         view.setDrawingCacheEnabled(true);  
  19.         view.buildDrawingCache();  
  20.         Bitmap b1 = view.getDrawingCache();  
  21.   
  22.         // 获取状态栏高度  
  23.         Rect frame = new Rect();  
  24.         activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);  
  25.         int statusBarHeight = frame.top;  
  26.   
  27.         // 获取屏幕长和高  
  28.         int width = activity.getWindowManager().getDefaultDisplay().getWidth();  
  29.         int height = activity.getWindowManager().getDefaultDisplay()  
  30.                 .getHeight();  
  31.         // 去掉标题栏  
  32.         Bitmap b = Bitmap.createBitmap(b1, 0, statusBarHeight, width, height  
  33.                 - statusBarHeight);  
  34.         view.destroyDrawingCache();  
  35.         return b;  
  36.     }  
  37.   
  38.     private static void savePic(Bitmap b, File filePath) {  
  39.         FileOutputStream fos = null;  
  40.         try {  
  41.             fos = new FileOutputStream(filePath);  
  42.             if (null != fos) {  
  43.                 b.compress(Bitmap.CompressFormat.PNG, 100, fos);  
  44.                 fos.flush();  
  45.                 fos.close();  
  46.             }  
  47.         } catch (FileNotFoundException e) {  
  48.             // e.printStackTrace();  
  49.         } catch (IOException e) {  
  50.             // e.printStackTrace();  
  51.         }  
  52.     }  
  53.   
  54.     public static void shoot(Activity a, File filePath) {  
  55.         if (filePath == null) {  
  56.             return;  
  57.         }  
  58.         if (!filePath.getParentFile().exists()) {  
  59.             filePath.getParentFile().mkdirs();  
  60.         }  
  61.         ScreenShot.savePic(ScreenShot.takeScreenShot(a), filePath);  
  62.     }  
  63. }  

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 准考证号和密码忘了怎么办 安运继续教育考试不及格怎么办 微信的视频打不开怎么办 公众号被取消了怎么办 合同上不写工资怎么办 已经上班了想考个大专文凭怎么办 微信小程序违规暂停服务怎么办 程序锁密码忘了怎么办 忘了应用锁密码怎么办 毕业后发现论文有错误怎么办 柯丽尔打胶片时胶片卡住了怎么办 闽教英语要收费怎么办 高一学生英语差怎么办 高一英语基础差怎么办 老师教育学生学生跑出教室怎么办 研究生课题难出论文怎么办 一审过了上诉期怎么办 民事判决赔偿不给钱怎么办 民事申诉期过了怎么办 过了两年申诉期怎么办 微快递下单不能定位怎么办 网上打字兼职被骗了怎么办 微信银行卡转错怎么办 在支付宝被诈骗怎么办 发现被骗了报警不理怎么办 投稿投错了网站怎么办 六个月宝宝吃辅食便秘怎么办 六个月宝宝加辅食后便秘怎么办 婴儿6个月便秘怎么办 7个月的孩子便秘怎么办 四个月宝宝喜欢吃手怎么办 博瑞智教育是上当了怎么办 我43岁记忆力差怎么办 艾灸灸出的湿疹怎么办 饭店合同到期房东不租怎么办 极端暴力控制不住自己怎么办 苹果已停止访问该网页怎么办 qq登陆后隐藏了怎么办 易班密码忘记了怎么办 老师上课讲错了怎么办 专升本差了一分怎么办