三十三、【webView浏览器】

282 阅读1分钟

webView简单用法: 1.打开一个网页

mContentWedView.loadUrl("http://www.baidu.com");

1.1 onCreate 的初始化

        mContentWedView = (WebView) findViewById(R.id.wv_contentWebView);
        mProgressBar = findViewById(R.id.pb_loading);
        mBarProgress = findViewById(R.id.pb_bar_prgress);
        mBarProgress.setMax(100);

2.相关设置

        WebSettings settings = mContentWedView.getSettings();
        settings.setDisplayZoomControls(true); // 是否显示放大缩小控件
        settings.setLoadWithOverviewMode(true); // 缩到屏幕大小
        settings.setJavaScriptEnabled(true); // 设置支持js功能
        settings.setDomStorageEnabled(true); // 关于某些标签不支持的问题
        //settings.setTextSize(WebSettings.TextSize.LARGER); // 设置字体大小
        // 启动缓存
        settings.setAppCacheEnabled(true);
        // 设置缓存模式
        settings.setCacheMode(WebSettings.LOAD_DEFAULT);

3.基本回调方法

        mContentWedView.setWebViewClient(new WebViewClient(){

          @Override
          public void onPageStarted(WebView view, String url, Bitmap favicon) {
              super.onPageStarted(view, url, favicon);
              Log.d(TAG, "onPageStarted: ");

              mProgressBar.setVisibility(View.VISIBLE);

          }

          @Override
          public void onPageFinished(WebView view, String url) {
              super.onPageFinished(view, url);
              Log.d(TAG, "onPageFinished: ");
              mProgressBar.setVisibility(View.INVISIBLE);
          }

          // 所有的链接都会走这个方法
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                view.loadUrl(url);
                return true;
            }


      });
        mContentWedView.setWebChromeClient(new WebChromeClient(){

            // 加载的网页进度
            @Override
            public void onProgressChanged(WebView view, int newProgress) {
                super.onProgressChanged(view, newProgress);
                Log.d(TAG, "onProgressChanged: " + newProgress);
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
                    mBarProgress.setProgress(newProgress,true);
                }else {
                    mBarProgress.setProgress(newProgress);
                }
                if (newProgress == 100) {
                    mBarProgress.setVisibility(View.GONE);
                }
            }
        });

4.Activity.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.jqhee.hjq.webviewdemo.MainActivity"
    android:orientation="vertical">

    <ProgressBar
        android:id="@+id/pb_bar_prgress"
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="fill_parent"
        android:layout_height="3dp"
        android:indeterminateOnly="false"
        android:max="100"
        android:progressDrawable="@drawable/progress_bar_states" >
    </ProgressBar>


    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1">

        <WebView
            android:id="@+id/wv_contentWebView"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />

        <ProgressBar
            android:id="@+id/pb_loading"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:indeterminateDrawable="@drawable/custom_progress"
            android:visibility="invisible" />
    </FrameLayout>
</LinearLayout>

drawable中文件 5.加载指示器 (转圆圈)

<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromDegrees="0"
    android:pivotX="50%"
    android:pivotY="50%"
    android:toDegrees="360" >

    <shape
        android:innerRadius="15dp"
        android:shape="ring"
        android:thickness="3dp"
        android:useLevel="false" >
        <gradient
            android:centerColor="#9f00"
            android:endColor="#f00"
            android:startColor="#fff"
            android:type="sweep" />
    </shape>
</rotate>

6.进度条

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
     <item android:id="@android:id/background">  
        <shape>  
            <gradient  
                    android:startColor="#66CCFF"  
                    android:centerColor="#66CCFF"  
                    android:endColor="#66CCFF"  
                      
            />  
        </shape>  
    </item>  

    <item android:id="@android:id/progress">  
        <clip>  
            <shape>  
                <gradient  
                    android:startColor="#3366FF"  
                    android:centerColor="#3366FF"  
                    android:endColor="#3366FF"  
                />  
            </shape>  
        </clip>  
    </item>  

</layer-list>