zoukankan      html  css  js  c++  java
  • 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)

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

  • 相关阅读:
    用循环链表求解约瑟夫问题
    Nim游戏变种——取纽扣游戏
    POJ-2726-Holiday Hotel
    常用排序算法总结(二)
    常用排序算法总结(一)
    找出数组中出现次数最多的那个数——主元素问题
    C99新特性:变长数组(VLA)
    linux tftp配置 (Ubuntu18.04)
    Ubuntu 18.04安装Samba服务器及配置
    记录学习Linux遇到的问题
  • 原文地址:https://www.cnblogs.com/easyfrog/p/3028357.html
Copyright © 2011-2022 走看看