Android 开发笔记八 截屏操作

截屏操作的具体步骤如下:

  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)

应该对之后做图象的混合等操作会很有用.

原文地址:https://www.cnblogs.com/easyfrog/p/3028357.html