您的位置:首页 > 移动开发 > Android开发

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

2013-12-03 11:36 429 查看
转自:/article/2474054.html

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);
 	}}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐