import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.Rect;
import android.view.View;


public class ScreenShot {


// 获取指定Activity的截屏,保存到png文件
private static Bitmap takeScreenShot(Activity activity){


//View是你需要截图的View
View 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;
System.out.println(statusBarHeight);

//获取屏幕长和高
int width = activity.getWindowManager().getDefaultDisplay().getWidth();
int height = activity.getWindowManager().getDefaultDisplay().getHeight();


//去掉标题栏
//Bitmap b = Bitmap.createBitmap(b1, 0, 25, 320, 455);
Bitmap b = Bitmap.createBitmap(b1, 0, statusBarHeight, width, height - statusBarHeight);
view.destroyDrawingCache();
return b;
}


//保存到sdcard
private static void savePic(Bitmap b,String strFileName){
FileOutputStream fos = null;
try {
fos = new FileOutputStream(strFileName);
if (null != fos)
{
b.compress(Bitmap.CompressFormat.PNG, 90, fos);
fos.flush();
fos.close();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}


//程序入口
public static void shoot(Activity a){
ScreenShot.savePic(ScreenShot.takeScreenShot(a), "sdcard/xx.png");
}
}

更多相关文章

  1. 【阿里云镜像】切换阿里巴巴开源镜像站镜像——Debian镜像
  2. Android获取View位置
  3. Android(安卓)为图片添加文字水印
  4. android获取屏幕相关信息
  5. android获取图片文件头信息
  6. Android涂鸦
  7. android 获取设备硬件信息
  8. Android之获取、设置EditText的文本...
  9. Android、IOS 获取剪切板内容

随机推荐

  1. 4.11笔记 android database打开方式,ios反
  2. android Launcher Demo小结
  3. Android无法System.out.println出null
  4. android实战
  5. Android动画循环弹动cycleInterpolator
  6. android批量插入数据效率对比
  7. Android - adb : logcat / shell / app_p
  8. Android中Activity共享变量的另一方法:App
  9. Android实现底部弹出按钮菜单升级版
  10. fastboot 详解