内容纲要
内置WebView访问博客网站
用Fragment内嵌一个WebView进行浏览
新建Fragment
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
fragmentView = inflater.inflate(R.layout.fragment_blog, container, false);
initWebView();
return fragmentView;
}
使用WebView
定义相关变量
private WebView webView;
private String url_path = ""; //webView的访问地址
创建对象
创建webView对象,设置属性并启动
private void initWebView() {
url_path = "http://www.weswing.cn/"; //指定URL
webView = (WebView) fragmentView.findViewById(R.id.webView);
WebSettings webSettings = webView.getSettings();
//设置WebView缓存模式 默认断网情况下不缓存
/**
* LOAD_CACHE_ONLY: 不使用网络,只读取本地缓存数据
* LOAD_DEFAULT: (默认)根据cache-control决定是否从网络上取数据。
* LOAD_NO_CACHE: 不使用缓存,只从网络获取数据.
* LOAD_CACHE_ELSE_NETWORK,只要本地有,无论是否过期,或者no-cache,都使用缓存中的数据。
*/
webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);
//让WebView支持DOM storage API
webSettings.setDomStorageEnabled(true);
//让WebView支持缩放
webSettings.setSupportZoom(true);
//开启JS的支持
webSettings.setJavaScriptEnabled(true);
//解决一些图片加载问题
webSettings.setBlockNetworkImage(false);
//启动浏览器
webView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url){
Log.d("myInfo","url: "+url);
view.loadUrl(url);
return true;
}
});
webView.loadUrl(url_path);
}
清理webView
WebView很占内存,不使用后及时清理
@Override
public void onDestroy() {
//销毁webView
if (webView != null) {
webView.loadDataWithBaseURL(null, "", "text/html", "utf-8", null);
webView.setTag(null);
webView.clearHistory();
((ViewGroup) webView.getParent()).removeView(webView);
webView.destroy();
webView = null;
}