01 |
android屏幕截图 |
02 |
03 |
import java.io.FileNotFoundException; |
04 |
import java.io.FileOutputStream; |
05 |
import java.io.IOException; |
06 |
|
07 |
import android.app.Activity; |
08 |
import android.graphics.Bitmap; |
09 |
import android.graphics.Rect; |
10 |
import android.view.View; |
11 |
|
12 |
public class ScreenShot
{ |
13 |
//
获取指定Activity的截屏,保存到png文件 |
14 |
private static Bitmap
takeScreenShot(Activity activity){ |
15 |
//View是你需要截图的View |
16 |
View
view = activity.getWindow().getDecorView(); |
17 |
view.setDrawingCacheEnabled(true); |
18 |
view.buildDrawingCache(); |
19 |
Bitmap
b1 = view.getDrawingCache(); |
20 |
|
21 |
//获取状态栏高度 |
22 |
Rect
frame = new Rect(); |
23 |
activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame); |
24 |
int statusBarHeight
= frame.top; |
25 |
System.out.println(statusBarHeight); |
26 |
|
27 |
//获取屏幕长和高 |
28 |
int width
= activity.getWindowManager().getDefaultDisplay().getWidth(); |
29 |
int height
= activity.getWindowManager().getDefaultDisplay().getHeight(); |
30 |
//去掉标题栏 |
31 |
//Bitmap
b = Bitmap.createBitmap(b1, 0, 25, 320, 455); |
32 |
Bitmap
b = Bitmap.createBitmap(b1, 0,
statusBarHeight, width, height - statusBarHeight); |
33 |
view.destroyDrawingCache(); |
34 |
return b; |
35 |
} |
36 |
|
37 |
//保存到sdcard |
38 |
private static void savePic(Bitmap
b,String strFileName){ |
39 |
FileOutputStream
fos = null; |
40 |
try { |
41 |
fos
= new FileOutputStream(strFileName); |
42 |
if (null !=
fos) |
43 |
{ |
44 |
b.compress(Bitmap.CompressFormat.PNG, 90,
fos); |
45 |
fos.flush(); |
46 |
fos.close(); |
47 |
} |
48 |
} catch (FileNotFoundException
e) { |
49 |
e.printStackTrace(); |
50 |
} catch (IOException
e) { |
51 |
e.printStackTrace(); |
52 |
} |
53 |
} |
54 |
|
55 |
//程序入口 |
56 |
public static void shoot(Activity
a){ |
57 |
ScreenShot.savePic(ScreenShot.takeScreenShot(a), "sdcard/xx.png"); |
58 |
} |
59 |
} |

本文提供了一个简单的Android屏幕截图方法,通过创建Bitmap并去除状态栏部分来实现屏幕内容的完整捕获,最后将截图保存到SD卡。
355

被折叠的 条评论
为什么被折叠?



