android View的快照与屏幕的截屏

本文介绍了Android中WebView的两种截图方法:一是仅截取WebView当前可视区域;二是获取WebView加载的全部内容快照,包括未显示部分。此外,还提供了一个简单的截屏示例,并展示了如何将截图缩放并显示在界面上。

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

android webView的快照与屏幕的截屏。部分代码如下:
 
[html] 
  /**  
    * 截取webView可视区域的截图  
    * @param webView 前提:WebView要设置webView.setDrawingCacheEnabled(true);  
    * @return  
    */  
private Bitmap captureWebViewVisibleSize(WebView webView){  
    Bitmap bmp = webView.getDrawingCache();  
    return bmp;  
}  
 
    /**
     * 截取webView可视区域的截图
     * @param webView 前提:WebView要设置webView.setDrawingCacheEnabled(true);
     * @return
     */
private Bitmap captureWebViewVisibleSize(WebView webView){
Bitmap bmp = webView.getDrawingCache();
return bmp;
}
 这个方法只截取屏幕中显示出来部分的webView画面,未显示的部分不会被截取。
 
[html] 
/**  
 * 截取webView快照(webView加载的整个内容的大小)  
 * @param webView  
 * @return  
 */  
private Bitmap captureWebView(WebView webView){  
    Picture snapShot = webView.capturePicture();  
      
    Bitmap bmp = Bitmap.createBitmap(snapShot.getWidth(),snapShot.getHeight(), Bitmap.Config.ARGB_8888);  
    Canvas canvas = new Canvas(bmp);  
    snapShot.draw(canvas);  
    return bmp;  
}  
 
/**
* 截取webView快照(webView加载的整个内容的大小)
* @param webView
* @return
*/  www.2cto.com
private Bitmap captureWebView(WebView webView){
Picture snapShot = webView.capturePicture();
 
Bitmap bmp = Bitmap.createBitmap(snapShot.getWidth(),snapShot.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bmp);
snapShot.draw(canvas);
return bmp;
}
这个看好与上一个是不同的,他是截取webView的整个页面,未显示的也会被截取。
 
[html]  
/**  
 * 截屏  
 * @param context  
 * @return  
 */  
   private Bitmap captureScreen(Activity context){  
     View cv = context.getWindow().getDecorView();  
     Bitmap bmp = Bitmap.createBitmap(cv.getWidth(), cv.getHeight(),Config.ARGB_8888);  
     Canvas canvas = new Canvas(bmp);  
     cv.draw(canvas);  
     return bmp;  
 }
/**
* 截屏
* @param context
* @return
*/
    private Bitmap captureScreen(Activity context){
      View cv = context.getWindow().getDecorView();
      Bitmap bmp = Bitmap.createBitmap(cv.getWidth(), cv.getHeight(),Config.ARGB_8888);
      Canvas canvas = new Canvas(bmp);
      cv.draw(canvas);
      return bmp;
 
    }
/**
* 截取可见屏幕部分的view视图
* @param activity
* @return
*/
public static Bitmap shotScreen(Activity activity) {
View view = activity.getWindow().getDecorView();
Display display = activity.getWindowManager().getDefaultDisplay();
view.layout(0, 0, display.getWidth(), display.getHeight());
// 允许当前窗口保存缓存信息,这样getDrawingCache()方法才会返回一个Bitmap
view.setDrawingCacheEnabled(true);
Bitmap bmp = Bitmap.createBitmap(view.getDrawingCache());
return bmp;
}

看看下面例子:
/**
 * 此demo实现了截屏并将截图放到指定的控件上缩放显示
 * 技术要点:
 * 1.截屏
 * 2.缩放功能
 * @author: 严程
 * @CreateDate: 2012-08-09
 */
public class Demo4Activity extends Activity {
private Button but;
private ImageButton img;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        but = (Button)findViewById(R.id.but);
        but.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// 实现截屏
View view = Demo4Activity.this.getWindow().getDecorView();
// 启动缓存
view.setDrawingCacheEnabled(true);
// 接收数据
Bitmap bitmap = view.getDrawingCache();
img.setImageBitmap(zoomBitmap(bitmap));

}
});
        img = (ImageButton)findViewById(R.id.img);
        img.setBackgroundColor(Color.RED);
    }


    /**
     * 实现图缩放
     * @param target
     * @return
     */
    public Bitmap zoomBitmap(Bitmap target){
    // 得到图片的高宽
    int width = target.getWidth();
    int height = target.getHeight();
    Matrix matrix = new Matrix();
    // 算出图片的高宽缩放比例
    float scaleWidth = ((float)300)/ width;
    float scaleHeight = ((float)300)/ height;
    matrix.postScale(scaleWidth, scaleHeight);
//     Bitmap result = Bitmap.createBitmap(target,0,0,width,height, matrix,true);
    return Bitmap.createBitmap(target,0,0,width,height, matrix,true);
    }
    
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值