一、webview加载网页<html>源码乱码问题html
1、webView.loadUrl();android
直接显示网页内容(单独显示网络图片),通常不会出现乱码。web
2、webView.loadData(data, "text/html", "UTF-8");浏览器
loadData主要被设计用来装载URI格式的数据,它不能经过网络来加载内容。网上流传的webview加载中文出现乱码,多数是使用此方法。使用过程当中主要有两个问题:网络
(1)loadData不能加载图片内容,若是想加载图片内容或者得到更强大的Web支持建议使用更强大的loadDataWithBaseURL.ide
(2) 许多实用loadData方法的朋友都遇到显示乱码的问题,那是由于编码器设置错误致使的。咱们知道String类型的数据主要是unicode编码,而WebView通常为了节省资源使用的是UTF-8编码,因此咱们在loadData的时候要告诉方法怎样转码。即要告诉它要将unicode编码的内容转成UTF-8编码的内容。有些朋友虽然在loadData的时候设置了编码方式,可是仍是显示乱码,这是由于还须要为WebView的text编码指定编码方式。举例以下:测试
WebView wv = (WebView)findViewById(R.id.webview) ;字体
wv.getSettings().setDefaultTextEncodingName(“UTF -8”) ;ui
wv.loadData(content, “text/html”, “UTF-8”) ;编码
注意为gb2312或gbk
(3).网页说明编码格式
以上两种方法是网上给的比较好的方法,可是我都试了下都没有解决个人乱码问题。 原来我是用LoadData方法来解析html的,可是听说这是官方的一个BUG,不能用来解析中文。因此绕其道而行之,采用loadDataWithBaseURL的方法,其中codeingType设置为utf-8就OK了。三、loadDataWithBaseURL若是单纯显示文字的话能够写webView.loadDataWithBaseURL(null, string, "text/html", "utf-8", null);
若是要显示图片能够写webView.loadDataWithBaseURL(baseUrl, string, "text/html", "utf-8", null);
其中baseUrl为你存储照片的路径,好比:
二、webview背景透明:
在xml文件中设置android:background无效。
<WebView
android:id="@+id/big_data_detail_content_textview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#fff"
android:background="@drawable/color_transparent"
android:textSize="14dp" />
解决办法:
webview.setBackgroundColor(0); // 设置背景透明
1.在2.X的平台下,通常设置webview背景为透明的方法以下:
wvContent.setBackgroundColor(0);
这个相信你们测试后都是没有问题的!
2.但当程序在4.0上使用时,发现竟然这种设置方法没法,即便经过上面设置背景为0,照样显示出原来默认的白色背景(在我本身的话huawei U9500)中测试是部分会显示白色,有些界面的渲染仍是成功的。这中现象是android4.0后,系统内部的加速器作了改变
详细内容参考[color=red]http://blog.chenming.info/blog/2012/09/18/android-hardware-accel/[/color] 一篇很好的文章,我也是在这里找到问题解决的方法!
其实我按照方法,在WebView控件中是硬件加速器失效即 android:layerType="software",即便这样,我本身的机器测试仍是出现部分WebView是白色背景!
最后我在该Activity中注册了 android:hardwareAccelerated="false" 就能够了!
二:webView加载本地字体包:
purchase_detail_content_webview.setBackgroundColor(0); // 设置背景色
String detaliContent = "<html><head><style> @font-face {font-family: MyFont; src: url('file:///android_asset/fonts/hunda.TTF');} div{text-indent: 2em;color:white;font-size:15;font-family:MyFont}</style></head><div>" + CONTENT + "</div><html>"; //asset/fonts/hunda.TTF:本地字体包文件;CONTENT :服务端发送的内容
purchase_detail_content_webview.loadDataWithBaseURL(null, detaliContent, "text/html", "utf-8", null);
原文地址:http://wptrafficanalyzer.in/blog/android-using-custom-ttf-fonts-in-webview/
3、webview和js脚本语言交互
4、返回上一个页面
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && mWebView.canGoBack()) {
mWebView.goBack();// 返回上一个页面
return true;
}
return super.onKeyDown(keyCode, event);
}
不调用第三方浏览器,在本webview内部跳转
mWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
});
webSettings.setJavaScriptEnabled(true); // 支持缩放 webSettings.setBuiltInZoomControls(true); webSettings.setSupportZoom(true); // 隐藏zoom缩放按钮 // webSettings.setDisplayZoomControls(false); // 自适应屏幕 webSettings.setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);