android抓屏

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

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

下面就是一个将当前的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是你需要截图的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);  
    }  
}  
 

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏cloudskyme

android使用Activity

第一个例子,显示网址 首先创建工程 ? 按照提示填入 我使用的是2.3版本,所以Min SDK Version填10 修改/res/layout/下main....

3873
来自专栏知识分享

用ESP8266+android,制作自己的WIFI小车(Android 软件)用ESP8266+android,制作自己的WIFI小车(ESP8266篇)

先说一下这篇文章里面的内容:TCP 客户端, 自定义对话框, 自定义按钮, ProgressBar竖直显示, 重力感应传感器,手机返回键新开启界面的问题(返回上...

9894
来自专栏懒人开发

CoordinatorLayout使用(一):Behavior简单理解

CoordinatorLayout出来很久了,时间关系,一直没有怎么弄过 看见简友的描述 r17171709 的 http://www.jianshu.c...

1054
来自专栏Android知识点总结

Android材料设计之FloatingActionButton+Snackbar+SheetX3

963
来自专栏青蛙要fly的专栏

关于Fragment的动态添加的相关疑问及解答

今天在网上看到了一个开源库:Spruce Android Animation Library (and iOS)

852
来自专栏蜉蝣禅修之道

Android之共享已安装的apk应用

6785
来自专栏pangguoming

Android利用V4包中的SwipeRefreshLayout实现上拉加载

基本原理 上拉加载或者说滚动到底部时自动加载,都是通过判断是否滚动到了ListView或者其他View的底部,然后触发相应的操作,这里我们以 ListView来...

3259
来自专栏Android小菜鸡

popupWindow的封装与学习

  本篇主要富含了对PopupWindow的封装,实现动画弹窗的例子。可用于相册选择、点赞等等。同时封装使用了建造者模式,对于补间动画的运用同样有较高的学习价值...

1071
来自专栏Android干货园

Android自定义组合控件---教你如何自定义下拉刷新和左滑删除

版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/lyhhj/article/details/80...

1701
来自专栏向治洪

DrawerLayout实现网易新闻抽屉效果

个人感觉网易的客户端比较前卫,有很多新鲜的东西,有时候模仿这些好的客户端能学到很多东西 开始今天的主要课题,下面是网易客户端抽屉模式实现的效果 ? ? 其...

2695

扫码关注云+社区

领取腾讯云代金券