zoukankan      html  css  js  c++  java
  • Android--------WebView+H5开发仿美团 预加载,加载失败和重新加载

    Android嵌入式开发已经占大多数了,很多界面都是以网页的形式展示,WebView可以使得网页轻松的内嵌到app里,还可以直接跟js相互调用。

    本博客主要是模仿美团的旅游出行模块的预加载,网页加载失败和网页重新加载

    效果如图:

                  

    图中的步骤是  无网络情况下加载网页,则加载不出来,出现提示界面,去把网络打开,在刷新则又可以加载界面,

    上图  在没有网络时,多次点击刷新时会出现Android WebView原生的网页加载失败的界面,这是一个Bug。

     

    而我的案例效果图 如下:

             

     在AndroidManifest.xml设置访问网络权限:

      <uses-permission android:name="android.permission.INTERNET" />
      <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
      <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />

    相关代码:

            webview.setHorizontalScrollBarEnabled(false);//水平不显示
            webview.setVerticalScrollBarEnabled(false); //垂直不显示
            WebSettings webSettings = webview.getSettings();
            webSettings.setJavaScriptEnabled(true);
            webSettings.setBuiltInZoomControls(false);
            webSettings.setSupportZoom(false);
            webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);
            webSettings.setUseWideViewPort(true);
            webSettings.setLoadWithOverviewMode(true);
            webSettings.supportMultipleWindows();  //多窗口
            webSettings.setAppCacheMaxSize(1024 * 1024 * 25);//设置缓冲大小,我设的是8M
            webSettings.setRenderPriority(WebSettings.RenderPriority.HIGH);
            webSettings.setSavePassword(true);
            webSettings.setAppCacheEnabled(true);
            webSettings.setSaveFormData(true);
            webSettings.setDomStorageEnabled(true);
            webSettings.setDatabaseEnabled(true);
          //设置缓存
    if (!NetUtils.isNetworkAvailable(MainActivity.this)) { webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); } else { webSettings.setCacheMode(WebSettings.LOAD_DEFAULT); } webview.loadUrl("url");
    private void showWebViewLoad(){
            webview.setWebViewClient(new WebViewClient() {
                @Override
                public boolean shouldOverrideUrlLoading(WebView view, String url) {
                    // TODO Auto-generated method stub
                    return true;
                }
    
                @Override
                public void onPageStarted(WebView view, String url, Bitmap favicon) {
                    super.onPageStarted(view, url, favicon);
    
                }
    
                @Override
                public void onPageFinished(WebView view, String url) {
                    super.onPageFinished(view, url);
                    linearLayout.setVisibility(View.GONE);
                }
    
                @Override
                public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
                    super.onReceivedError(view, errorCode, description, failingUrl);
                    webviewError.setVisibility(View.VISIBLE);
                }
            });
        }

    在对应的方法中完成相关功能;

     

    源码下载Github:https://github.com/DickyQie/android-webview-ui

  • 相关阅读:
    如何设置QT的窗口图标和exe应用程序图标(两步搞定操作)
    怎么打包发布QT程序(图文详解)
    QT实现读取sps文件并将数据显示在TableView中(复习)
    LeetCode第一题——两数之和
    大型数据库复习
    Android复习
    C#桌面程序设计复习
    WordCount扩展与优化
    第二次作业(WordCount)重制版
    第二次作业(WordCount)
  • 原文地址:https://www.cnblogs.com/zhangqie/p/6728230.html
Copyright © 2011-2022 走看看