截屏操作的具体步骤如下:
1. 得到当前屏幕的View对象
View view = getWindow().getDecorView();
2. 允许这个View对象写入缓存,这样才能得到他的画面
view.setDrawingCacheEnabled(true);
3. 让这个View向缓存中写入一帧
view.buildDrawingCache();
4. 得到刚写入缓存的这一帧图象,得到的Bitmap对象
Bitmap bmp = view.getDrawingCache();
5. 将这个得到的Bitmap对象保存即可.
代码如下:
1 // 按钮点击 2 class MyButtonClick implements OnClickListener { 3 @Override 4 public void onClick(View v) { 5 // 得到当前屏幕的View 6 View view = getWindow().getDecorView(); 7 // 允许这个View可以向缓存中写入 8 view.setDrawingCacheEnabled(true); 9 // 向缓存中画入一屏幕数据 10 view.buildDrawingCache(); 11 // 得到这一屏数据,并返回一个Bitmap对象 12 Bitmap bmp = view.getDrawingCache(); 13 14 /* 将这个BitMap对象保存到SD卡中 */ 15 try { 16 // 先创建一个File对象 17 File bmpFile = FileUtils.CreateFile("CaptureScreen/test.png"); 18 // 创建一个文件输出流 19 FileOutputStream outStream = new FileOutputStream(bmpFile); 20 // 调用 Bitmap 对象的 Compress方法,将其存入到File对象中 21 bmp.compress(CompressFormat.PNG, 100, outStream); 22 23 // 关闭文件输出流 24 outStream.close(); 25 26 Toast.makeText(MainActivity.this, "截图完成", Toast.LENGTH_SHORT).show(); 27 } catch (IOException e) { 28 // TODO Auto-generated catch block 29 e.printStackTrace(); 30 } 31 } 32 }
此外 Bitmap 还有如下方法 :
bmp.copyPixelsFromBuffer(src)
bmp.copyPixelsToBuffer(dst)
bmp.setPixel(x, y, color)
bmp.setPixels(pixels, offset, stride, x, y, width, height)
应该对之后做图象的混合等操作会很有用.