webview系列问题总结
2015-09-18 16:42
519 查看
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即可。
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=
ac1d
new AlertDialog.Builder(mContext);
builder.setTitle("呵呵");
builder.setMessage("成功了");
builder.show();
}
}
}
重写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即可。
@Override public 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=
ac1d
new AlertDialog.Builder(mContext);
builder.setTitle("呵呵");
builder.setMessage("成功了");
builder.show();
}
}
}
相关文章推荐
- android WebView组件使用总结
- 解决video标签在安卓webview下无法自动播放问题
- Android webview与js交换JSON对象数据示例
- android中WebView和javascript实现数据交互实例
- Android的webview支持HTML5的离线应用功能详细配置
- Android开发之WebView组件的使用解析
- Android中实现Webview顶部带进度条的方法
- Android中访问证书有问题的SSL网页的方法
- 基于Android中Webview使用自定义的javascript进行回调的问题详解
- Android使用WebView播放flash的方法
- android webview 中localStorage无效的解决方法
- Android使用原生组件WebView加载网页和数据的方法
- android webview 简单浏览器实现代码
- android 中 webview 怎么用 localStorage
- Android WebView 常见问题及处理方案
- Android中在WebView里实现Javascript调用Java类的方法
- Android中WebView图片实现自适应的方法
- Android实现WebView删除缓存的方法
- Android开发笔记之探秘WebView
- Unity3D游戏引擎实现在Android中打开WebView的实例