WebView

来源:互联网 发布:知乎 编程电脑配置要求 编辑:程序博客网 时间:2024/06/05 07:18

//添加权限 <uses-permission android:name="android.permission.INTERNET"/>


//布局Main


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <EditText
            android:id="@+id/et_url"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:hint="请输入网址" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="load"
            android:text="开始加载" />
    </LinearLayout>

    <ProgressBar
        android:visibility="gone"
        android:id="@+id/pb"
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <WebView
        android:id="@+id/webView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</LinearLayout>


//activityMain逻辑

package com.example.webview;


import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebSettings.ZoomDensity;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.EditText;
import android.widget.ProgressBar;

public class MainActivity extends Activity {

    private EditText et_url;
    private WebView webView;
    private ProgressBar pb;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        et_url = (EditText) findViewById(R.id.et_url);
        webView = (WebView) findViewById(R.id.webView);
        pb = (ProgressBar) findViewById(R.id.pb);
        // 给webView进行一些基本的设置
        initSettting();
    }

    @SuppressLint("NewApi")
    private void initSettting() {

        WebSettings settings = webView.getSettings();
        // load_default 只要有缓存,就用缓存
        // load_cache_else_network 当缓存失效时,加载网络
        // LOAD_DEFAULT, LOAD_CACHE_ELSE_NETWORK, LOAD_NO_CACHE or
        // LOAD_CACHE_ONLY. The default value is LOAD_DEFAULT.

        settings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
        // 设置是否展示一个缩放的控制器
        settings.setBuiltInZoomControls(true);
        // 最高缩放的级别
        settings.setDefaultZoom(ZoomDensity.FAR);
        // 设置默认的字体大小
        settings.setDefaultFontSize(10);
        // 设置只在当前页面展示
        webView.setWebViewClient(new WebViewClient());
        // 设置有关网页加载进度的客户端
        webView.setWebChromeClient(new WebChromeClient() {
            @Override
            public void onProgressChanged(WebView view, int newProgress) {
                super.onProgressChanged(view, newProgress);
                // 让进度条显示
                pb.setVisibility(View.VISIBLE);
                pb.setProgress(newProgress);
                // 当进度==100时,隐藏进度条
                if (newProgress == 100) {
                    pb.setVisibility(View.GONE);
                }
            }
        });

    }

//button监听
    public void load(View v) {
        String url = et_url.getText().toString().trim();
        webView.loadUrl(url);
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        // 监听返回键
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            // 如果webView可以后退
            if (webView.canGoBack()) {
                webView.goBack();
            } else {
                finish();
            }
        }
        return true;
    }

}
0 0
原创粉丝点击