android关于View的截图

本文介绍如何在Android应用中实现屏幕截图功能,包括截取缓存图片及WebView整个网页的方法。针对缓存图片截取,需启用并禁用缓存以确保正确截图;对于WebView截图,则通过capturePicture()方法实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、截取缓存图片(当前屏幕显示的部分):

从ImageView对象中获取图像的方法,就是ImageView类中的getDrawingCache()方法,比如下面的代码就是从一个ImageView对象iv_photo中获取图像:

Bitmap obmp = Bitmap.createBitmap(iv_photo.getDrawingCache());

但是需要说明的是:

1.     在调用getDrawingCache()方法从ImageView对象获取图像之前,一定要调用setDrawingCacheEnabled(true)方法:

            iv_photo.setDrawingCacheEnabled(true);

        否则,无法从ImageView对象iv_photo中获取图像;

2.     在调用getDrawingCache()方法从ImageView对象获取图像之后,一定要调用setDrawingCacheEnabled(false)方法:

            iv_photo.setDrawingCacheEnabled(false);

        以清空画图缓冲区,否则,下一次从ImageView对象iv_photo中获取的图像,还是原来的图像。

二、截取webView的整个网页:

android.graphics.Picture pic = wView.capturePicture();
      int width = pic.getWidth();
      int height = pic.getHeight();

Bitmap bmp = Bitmap.createBitmap(width, 200, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bmp);
pic.draw(canvas);


imageView.getBackground(),是获取它的背景图片;

在调用getDrawingCache的时候要注意下面2点:

  1. 在调用getDrawingCache()方法从ImageView对象获取图像之前,一定要调用setDrawingCacheEnabled(true)方法:

    imageview.setDrawingCacheEnabled(true);

    否则,无法从ImageView对象iv_photo中获取图像;

  2. 在调用getDrawingCache()方法从ImageView对象获取图像之后,一定要调用setDrawingCacheEnabled(false)方法:

    imageview.setDrawingCacheEnabled(false);

    以清空画图缓冲区,否则,下一次从ImageView对象iv_photo中获取的图像,还是原来的图像。







  1. private Bitmap shot(Activity activity) {   
  2.        //View是你需要截图的View   
  3.          View view = activity.getWindow().getDecorView();   
  4.          view.setDrawingCacheEnabled(true);   
  5.          view.buildDrawingCache();   
  6.          Bitmap b1 = view.getDrawingCache();   
  7.        // 获取状态栏高度 /  
  8.            Rect frame = new Rect();  
  9.          activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);  
  10.          int statusBarHeight = frame.top;  
  11.          Log.i("TAG""" + statusBarHeight);  
  12.          // 获取屏幕长和高  
  13.          int width = activity.getWindowManager().getDefaultDisplay().getWidth();  
  14.          int height = activity.getWindowManager().getDefaultDisplay().getHeight();  
  15.         // 去掉标题栏  
  16.             Bitmap b = Bitmap.createBitmap(b1, 025320455);  
  17.          Bitmap b = Bitmap.createBitmap(b1, 0, statusBarHeight, width, height - statusBarHeight);  
  18.         view.destroyDrawingCache();  
  19.          return b;  
  20.     }  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值