Android webview 快照及白屏闪屏解决方案

快照方法:

 /**  
    * 截取webView可视区域的截图  
    * @param webView 前提:WebView要设置webView.setDrawingCacheEnabled(true);  
    * @return  
    */  
private Bitmap captureWebViewVisibleSize(WebView webView){  
    Bitmap bmp = webView.getDrawingCache();  
    return bmp;  
} 

/**  
 * 截取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;  
}  

/**  
 * 截屏  
 * @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;  

前提:WebView要设置webView.setDrawingCacheEnabled(true);
第一种效果还可以。其他待测,截屏的尽量不要弄,容易出问题。

白屏和闪屏解决

1.在WebView的xml属性中设置Android:layerType=software
取消硬件加速法

2.在代码中设置背景透明setBackgroundColor(0);
背景透明发

3.快照影响或其他view影响
当有快照的时候,排查是否为快照的白色页面,还有在设置view.setVisibility();时,如果用隐藏(INVISIBLE)或(GONE),没效果,可以换个角度,处理显示的,让显示的显示(VISIBLE),这样也是可以的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值