WebView基本使用

1.权限

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

2.布局

<?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=".MainActivity"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <EditText
            android:id="@+id/hunt"
            android:layout_width="0dp"
            android:padding="10dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:hint="请输入网址"/>

        <Button
            android:id="@+id/seek"
            android:padding="10dp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="搜索"/>
    </LinearLayout>

    <ProgressBar
        android:id="@+id/progress"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        style="@style/Base.Widget.AppCompat.ProgressBar.Horizontal"
        android:visibility="gone"/>

    <WebView
        android:id="@+id/webView"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"/>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <Button
            android:id="@+id/go_forward"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="前进"/>

        <Button
            android:id="@+id/refresh"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="刷新"/>

        <Button
            android:id="@+id/go_back"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="后退"/>

    </LinearLayout>

</LinearLayout>

3.Mainctivity代码

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private WebView mWebView;
    private EditText mHunt;
    private ProgressBar mProgressBar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //初始化控件
        initView();


    }

    private void initView() {
        mHunt = findViewById(R.id.hunt);
        Button seek = findViewById(R.id.seek);
        mWebView = findViewById(R.id.webView);
        Button go_forward = findViewById(R.id.go_forward);
        Button refresh = findViewById(R.id.refresh);
        Button go_back = findViewById(R.id.go_back);
        mProgressBar = findViewById(R.id.progress);
        mProgressBar.setProgress(0);
        mProgressBar.setMax(100);
        seek.setOnClickListener(this);
        go_forward.setOnClickListener(this);
        refresh.setOnClickListener(this);
        go_back.setOnClickListener(this);

        //使用webView对象,进行的一些初始化设置
        initWebView();

        //使用webViewSettings对webVIew进行一系列初始化的设置
        initSettings();

    }

    private void initSettings() {
        //得到一个webView的设置对象,WebSettings.
        WebSettings settings = mWebView.getSettings();
        //使webView可以支持Javascript:
        settings.setJavaScriptEnabled(true);
        //使webView允许网页缩放,记住用这方法前,要有让webView支持Javascript的设定.否则会不起作用
        settings.setSupportZoom(true);
        // setBlockNetworkImage  是webView只加载文字,而不加载图片,为用户省流量.
        //settings.setBlockNetworkImage(true);
    }

    private void initWebView() {
        //setWebViewClient此方法的作用是,
        // 当在webView进行点击时不跳转到别的浏览器
        mWebView.setWebViewClient(new WebViewClient());

        // requestFocus 触摸焦点起作用
        // (如果不设置,则在点击网页文本输入框时,不能弹出软键盘及不响应其他的一些事件
        mWebView.requestFocus();

        //设置支持h5

        // setWebChromeClient 该监听事件是指UI(界面)发送改变时进行各监听.  onProgressChanged
        mWebView.setWebChromeClient(new WebChromeClient(){
            @Override
            public void onProgressChanged(WebView view, int newProgress) {
                super.onProgressChanged(view, newProgress);

                //首先通过代码让pRogressBar显示出来
                mProgressBar.setVisibility(View.VISIBLE);
                //其次对progressBar设置加载进度的参数
                mProgressBar.setProgress(newProgress);
                if(newProgress == 100){
                    //加载完毕消失进度条
                    mProgressBar.setVisibility(View.GONE);
                }
            }
        });
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.seek:

                //进入
                load();

                break;
            case R.id.go_forward:

                //前进
                go_forward();
                break;
            case R.id.refresh:
                //刷新
                mWebView.reload();
                break;
            case R.id.go_back:
                //后退
                go_back();
                break;
        }
    }

    //后退
    private void go_back() {
        if(mWebView.canGoBack()){
            mWebView.goBack();
        }else{
            Toast.makeText(this, "到尾了", Toast.LENGTH_SHORT).show();
        }
    }

    //前进
    private void go_forward() {
        //进行一个状态的判断,看是否可以前进,canGoForward
        if(mWebView.canGoForward()){
            mWebView.goForward();
        }else{
            Toast.makeText(this, "到头了", Toast.LENGTH_SHORT).show();
        }
    }

    //搜索
    private void load() {
        String trim = mHunt.getText().toString().trim();
        if(TextUtils.isEmpty(trim)){
            Toast.makeText(this, "不能输入空网址", Toast.LENGTH_SHORT).show();
            return;
        }

        //加载网页
        mWebView.loadUrl("http://" + trim);

    }
}

效果
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/jiahui6666/article/details/84145911