前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >android抓屏

android抓屏

作者头像
xiangzhihong
发布2018-01-26 18:51:35
6430
发布2018-01-26 18:51:35
举报
文章被收录于专栏:向治洪向治洪

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

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

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

代码语言:js
复制
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是你需要截图的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);  
    }  
}  
 
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2013-12-09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
图像处理
图像处理基于腾讯云深度学习等人工智能技术,提供综合性的图像优化处理服务,包括图像质量评估、图像清晰度增强、图像智能裁剪等。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档