webview系列问题总结

来源:互联网 发布:人工智能电影剧情简介 编辑:程序博客网 时间:2024/05/20 05:08

Android的WebView退出后flash视频播放器无法退出的问题

重写activity的onResume,onPause方法,并调用webview的onResume,onPause方法

@Override
protected void onResume() {
super.onResume();
webView.onResume();
}
@Override
protected void onPause() {
super.onPause();
webView.onPause();
}

webView加载文件或加载地址时出现白板的问题

在Android中,WebView可以用来加载http和https网页到本地应用的控件。但是在默认情况下,通过loadUrl(String url)方法,可以顺利loadUrl(“http://www.baidu.com”)之类的页面。但是,当load通过ssl加密的https页面,但是如果这个网站的安全证书在Android无法得到认证,WebView就会变成一个空白页,而并不会像自带的浏览器一样弹出提示。因此,我们必须针对这种情况进行处理。

首先说的是Android 2.2及更高的处理方式,在2.2及以上系统中处理只需要重载WebViewClient 的 onReceivedSslError即可。

@Overridepublic void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {handler.proceed();//接受所有证书Log.e("SslError",error.toString());}


webview加载网页图片文字不适配等问题

webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);//样式适配(有些手机不行)

webView.getSettings().setBuiltInZoomControls(true);//触摸放大缩小
webView.getSettings().setSupportZoom(true);//支持缩放

以前做项目一直都没找到好的解决方法,最近同时找到了一个java解析HTML的工具类jsoup ,中文api地址:http://www.open-open.com/jsoup/。

使用方法如下,这里以网页中图片适配为例:

Document doc_Dis = Jsoup.parse(s);
Elements ele_Img = doc_Dis.getElementsByTag("img");
if (ele_Img.size() != 0){
for (Element element:ele_Img) {
element.attr("style", "width:100%");
} 
}


使用TextView显示网页

/**

该方法用于显示文字

*/

private void showHtmlText() {
        final String sText = "测试自定义标签:<br><h1><qdq>测试自定义标签</qdq></h1>";
        showText.setText(Html.fromHtml(sText, null, new MxgsaTagHandler(this)));
        showText.setClickable(true);
        showText.setMovementMethod(LinkMovementMethod.getInstance());
}
/**
* 提醒一点:获取图片以后,一定要设置图片的边界,界线
* 即:drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
* 不然获取图片后,Textview不能显示图片。
*/

private void showHtmlImg() {
//加载资源图片,本地图片,网络图片类似,
final String sText1 = "测试图片信息:<img src=\""+R.drawable.ic_launcher+"\" />";
final Html.ImageGetter imageGetter = new Html.ImageGetter() {
   public Drawable getDrawable(String source) {
    //source就是图片路径
       Drawable drawable=null;
   int rId=Integer.parseInt(source);
   drawable=getResources().getDrawable(rId);
   drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
   return drawable;
   };
};
showImg.setText(Html.fromHtml(sText1, imageGetter, null));
}


public class MxgsaTagHandler implements TagHandler{
    private int sIndex = 0;  
    private  int eIndex=0;
    private Context mContext;
    
    public MxgsaTagHandler(Context context){
        mContext=context;
    }
    
    public void handleTag(boolean opening, String tag, Editable output, XMLReader xmlReader) {
        if (tag.toLowerCase().equals("qdq")) {
            if (opening) {
                sIndex=output.length();
            }else {
                eIndex=output.length();
                output.setSpan(new MxgsaSpan(), sIndex, eIndex, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
            }
        }
    }
    private class MxgsaSpan extends ClickableSpan implements OnClickListener{
        @Override
        public void onClick(View widget) {
            //具体代码,可以是跳转页面,可以是弹出对话框,下面是跳转页面
            AlertDialog.Builder builder=new AlertDialog.Builder(mContext);
            builder.setTitle("呵呵");
            builder.setMessage("成功了");
            builder.show();
        }
    }


}

0 0
原创粉丝点击