WebView入门

来源:互联网 发布:ctr预估算法 编辑:程序博客网 时间:2024/05/17 07:51

今天简单介绍一下WebView的使用

  • 定义XML文件 输入框 进度条 WebView控件
<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"    tools:context=".MainActivity" >    <EditText        android:id="@+id/et_urlPath"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:hint="输入网址"        android:text="http://www.baidu" />    <ProgressBar        android:id="@+id/progressbar"        style="?android:attr/progressBarStyleHorizontal"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:visibility="gone" />    <WebView        android:id="@+id/webView"        android:layout_width="fill_parent"        android:layout_height="fill_parent" /></LinearLayout>
  • 代码实现
package com.example.webviewdemo;import android.os.Bundle;import android.annotation.SuppressLint;import android.app.Activity;import android.text.Editable;import android.text.TextWatcher;import android.view.KeyEvent;import android.view.View;import android.webkit.WebChromeClient;import android.webkit.WebSettings;import android.webkit.WebSettings.TextSize;import android.webkit.WebSettings.ZoomDensity;import android.webkit.WebView;import android.webkit.WebViewClient;import android.widget.EditText;import android.widget.ProgressBar;import android.widget.TextView;import android.widget.TextView.OnEditorActionListener;public class MainActivity extends Activity {    private EditText et_urlPath;    private ProgressBar progressbar;    private WebView webView;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        // 查找控件        et_urlPath = (EditText) findViewById(R.id.et_urlPath);        progressbar = (ProgressBar) findViewById(R.id.progressbar);        webView = (WebView) findViewById(R.id.webView);        // 设置作为客户端存在,界面跳转只在自己应用程序中        webView.setWebViewClient(new WebViewClient());        // 设置客户端浏览监听        webView.setWebChromeClient(new WebChromeClient() {        @Override        public void onProgressChanged(WebView view, int newProgress) {                super.onProgressChanged(view, newProgress);                // 设置进度显示                progressbar.setVisibility(View.VISIBLE);                // 设置进度                progressbar.setProgress(newProgress);                if (newProgress == 100) {                    // 进度到头,消失                    progressbar.setVisibility(View.GONE);                }            }        });        //调用对webView做初始化设置的方法        initWebViewSetting();        //文本框设置监听et_urlPath.addTextChangedListener(new TextWatcher() {    // s 代表文本框输入的内容    @Override    public void onTextChanged(CharSequence s, int start, int before,        int count) {        // 判断输入的内容以  ".com" 结尾        boolean endsWith = s.toString().trim().endsWith(".com");                if (endsWith) {                    //加载链接                    webView.loadUrl(s.toString().trim());                }            }    @Override    public void beforeTextChanged(CharSequence s, int start, int count,                    int after) {            }            @Override            public void afterTextChanged(Editable s) {            }        });    }    /**     * 对webView做初始化设置     */    @SuppressLint("SetJavaScriptEnabled")    @SuppressWarnings("deprecation")    private void initWebViewSetting() {        // 获取设置对象        WebSettings settings = webView.getSettings();        // 设置webView的缓存方式 设置为默认方式        // 默认如果有缓存,并且缓存未过期,使用缓存,否则使用网络        settings.setCacheMode(WebSettings.LOAD_DEFAULT);        // 设置支持js代码        settings.setJavaScriptEnabled(true);        // 设置缩放模式 缩放到最小        settings.setDefaultZoom(ZoomDensity.FAR);        // 设置字体大小        settings.setTextSize(TextSize.SMALLER);    }    @Override    public boolean onKeyDown(int keyCode, KeyEvent event) {        if (keyCode == KeyEvent.KEYCODE_BACK) {            // 判断我的界面,如果在里边一层,退一层,如果最外层            if (webView.canGoBack()) {                //后退                webView.goBack();            } else {                finish();            }        }        return true;    }}
  • 添加权限
 <uses-permission android:name="android.permission.INTERNET"/>
0 0