关闭

android 保存当前屏幕或者view为图片bitmap

408人阅读 评论(0) 收藏 举报
分类:

转自:http://blog.csdn.net/arui319/article/details/9273563

 

public class ScreenShot {

	public static Bitmap takeScreenShot(Activity activity) {
		// View是你需要截图的ViewView 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;
 	}
	<span style="color:#ff0000;">//新增方法</span>
	public static Bitmap takeViewShot(View view) {
  	// View是你需要截图的View
 	 view.setDrawingCacheEnabled(true);view.buildDrawingCache();
  	Bitmap b1 = view.getDrawingCache();// 获取View长和高
  	int width = view.getWidth();
  	int height = view.getHeight();Bitmap b = Bitmap.createBitmap(b1, 0, 0, width, height);
  	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) {
  	} catch (IOException e) {
  	}}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
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:16923次
    • 积分:396
    • 等级:
    • 排名:千里之外
    • 原创:22篇
    • 转载:8篇
    • 译文:0篇
    • 评论:2条
    文章分类
    最新评论