android抓屏

简介: <p>现在无论是应用,还是游戏中,都经常会有分享的功能。分享,不仅要分享文字,也要分享应用或者游戏的屏幕截图,这样才能做到图文并茂,吸引到更多的用户。</p> <p>想要做图片的分享功能,首先就需要抓屏,将当前屏幕保存为一个图片文件。</p> <p>下面就是一个将当前的Activity直接保存为一个图片文件的类库,可以直接使用。需要的,直接拿来主义就好了。</p> <p><br></

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

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

下面就是一个将当前的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.     }  

目录
相关文章
|
XML 消息中间件 算法
Android 夜间模式的四种实现
实现夜间模式有很多种方式,经过多次尝试,算是找到了一种性价比较高的方式。 这是最正统的方式,但工作量巨大,因为要全局替换 xml 布局中所有硬编码的色值,将其换成主题色。然后通过换主题达到换肤的效果。
588 0
|
开发工具 Android开发
Android友盟推送
Android友盟推送
227 0
|
XML SQL IDE
Android Studio快捷键以及使用技巧
Android Studio快捷键以及使用技巧
302 0
|
传感器 存储 SQL
Android 值得学【Android 专题 2】
Android 系统到底提供了哪些东西,供我们可以开发出优秀的应用程序。 四大组件 Android 系统四大组件分别是活动(Activity)、服务(Service)、广播接收器(BroadcastReceiver)和内容提供器(Content Provider)。其中活动是所有 Android 应用程序的门面,凡是在应用中你看得到的东西,都是放在活动中的。而服务就比较低调了,你无法看到它,但它会一直在后台默默地运行,即使用户退出了应用,服务仍然是可以继续运行的。广播接收器可以应用接收来自各处的广播消息,比如电话、短信等,当然你的应用同样也可以向外发出广播消息。内容提供器则为应用程序之间共享数
104 0
|
搜索推荐 Android开发
|
开发工具 Android开发
|
XML Android开发 数据格式
|
Android开发 Java 数据格式
Android SwipeSelector
 Android SwipeSelector Android SwipeSelector是github上一个第三方开源的项目,其项目主页:https://github.
813 0