• 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)

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

  • 相关阅读:
    arm架构与体系结构
    C语言双链表遍历,插入,删除
    C语言实现单链表的遍历,逆序,插入,删除
    C语言函数的变参实用与分析
    DEBUG宏
    运算中的临时匿名变量
    main函数的传参与返回
    存储类、作用域、生命周期、链接属性
    制作动态链接库并使用
    内存管理——进程创建,执行,缺页,终止
  • 原文地址:https://www.cnblogs.com/easyfrog/p/3028357.html
Copyright © 2020-2023  润新知