关闭

WebView入门

82人阅读 评论(0) 收藏 举报

今天简单介绍一下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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1382次
    • 积分:82
    • 等级:
    • 排名:千里之外
    • 原创:7篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章存档