android抓屏

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

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

下面就是一个将当前的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.     }  
时间: 2024-11-08 19:40:46

android抓屏的相关文章

PHP抓屏函数实现屏幕快照代码分享

 谁说抓图只能用QQ.用打印屏幕,PHP也能做到,本文主要介绍PHP抓屏函数实现屏幕快照的方法   代码如下: <?php * 屏幕快照 $im = imagegrabscreen(); imagepng($im, "myscreenshot.png");     * 抓取一个窗口(IE为例)   $browser = new COM("InternetExplorer.Application"); $handle = $browser->HWND; $

linux下python抓屏实现方法

  本文实例讲述了linux下python抓屏实现方法.分享给大家供大家参考.具体实现代码如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 7

在VB.NET中进行抓屏

'Author:wgscd '功能:抓屏 'QQ153964481 'Date:2005-4-12 '*********************************  Public Class Form1     Inherits System.Windows.Forms.Form #Region " Windows 窗体设计器生成的代码 "     Public Sub New()         MyBase.New()         '该调用是 Windows 窗体设计器所

android触屏中心位置

问题描述 android触屏中心位置 使用下面的方法触发android的触屏事件.需要辨识中心触屏,怎么样判断用户触摸了屏幕的中间位置? @Overridepublic boolean onTouch(View v MotionEvent mev) {int width = v.getWidth();int height = v.getHeight();float x = mev.getX();float y = mev.getY();String msg;if (x < width / 2)

Android竖屏模式实现横屏效果

android横竖屏切换是非常耗时间的,而且切换的过程也会存在明显的翻转卡顿效果,那么是否可以在竖屏模式下实现横屏的效果呢?答案是肯定的,这里提供一种方法,其思路是对view进行90度的旋转,而且实现起来非常简单,其效果图如下: 首先我们先在layout里排版出一个水平的布局,如下图: 是不是很简单?布局代码如下: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=

解决Android横竖屏切换数据丢失问题的方法_Android

Android横竖屏切换时,当前的Activity会被销毁,然后Activity上面的数据将会全部丢失. 如Listview上面每个item的checkbox,横竖屏切换时,复选框就丢失所有选中信息. 解决方案1:在Androidmanifest.xml的activity标签中加入android:configChanges="orientation|keyboardHidden" <activity android:configChanges="orientation|

视频录制-android 竖屏录制 电脑播放旋转了90度

问题描述 android 竖屏录制 电脑播放旋转了90度 对于横屏录的,在电脑上播放正常. 竖屏录制,手机上录制和播放正常,但把竖屏录制的视频拷到电脑上,播放时被逆时针旋转了90度... 解决方案 楼主,你这个问题解决没 解决方案二: 楼主,你这问题解决了没,求共享啊 解决方案三: http://blog.csdn.net/he1454023820/article/details/49464423,我解决了,可以参考下 解决方案四: 无解...........

双屏异显-现在要做一个android分屏异显,没有思路,求指点

问题描述 现在要做一个android分屏异显,没有思路,求指点 就是实现两个屏幕同时显示两个activity,上面的大屏幕播放广告,下面的屏幕可以进行操作,而且两者独立,当有人操作下面的屏幕时,上面的广告仍会继续播放.我是听说Android4.4中google官方支持了分屏,我也看了下google官方最新的那个API20,但是无奈我是新手,从没看过API这么大的东西,以前最多也只是知道查查某个类的某个函数,不知道怎么找那个分屏异显的,求知道,急求 解决方案 下载最新的ADT,创建项目时,可以选择

横竖屏 切换-Android横竖屏切换有什么差别呢?

问题描述 Android横竖屏切换有什么差别呢? 个人感觉Android的横竖屏切换是因为重力的感应,之后软件的布局会改变, 但是横竖屏切换的具体差别是什么? 解决方案 页面:页面会重新加载,只要你的布局不是绝对.写死的,通常会自动适应,一般不会出现大问题. 数据:安卓内置的bundle会帮你保存一些系统认为比较重要的数据,还有一些数据是可能会丢失,需要你自己手动保存(具体查看onSaveInstance()等方法) 解决方案二: 页面会重新加载的,因为如果你不在Mainfest.xml文件中配