安卓开发-内置WebView访问网站

内容纲要

内置WebView访问博客网站

用Fragment内嵌一个WebView进行浏览

新建Fragment

关于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;
    }

发表评论