WebView入门

原创 2016年06月01日 20:41:32

今天简单介绍一下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"/>
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Android基础入门教程——7.5.1 WebView(网页视图)基本用法

本节给大家带来的是Android中的一个用于显示网页的控件:WebView(网页视图),现在Android应用 层开发的方向有两种:客户端开发和HTML5移动端开发!所谓的HTML5端就是:HTML...

mui初级入门教程(二)— html5+ webview 底部栏用法详解

文章来源:小青年原创 发布时间:2016-05-19 关键词:mui,html5+,webview 转载需标注本文原始地址: http://zhaomenghuan.github.io... ...

WebView与JS的那些事:入门篇

webview应该是开发人员最常接触的控件了,加载一个页面的时候,webview.loadUrl(url)就完事了,我遇到这么玩webview的一般都是在界面显示一些应用说明或是版本信息的时候比较常见...

Android入门--WebView使用总结

WebView,字面理解就是网页浏览,用于加载显示网页,类似浏览器,使用了WebKit渲染引擎加载显示网页,Android及iOS的webView的引擎都是webkit,对Html5提供支持.下面整理...
  • TTCCAAA
  • TTCCAAA
  • 2015年04月27日 16:15
  • 1401

Android之webView入门

WebView可以使得网页轻松的内嵌到app里,还可以直接跟js相互调用。webview有两个方法:setWebChromeClient 和 setWebClient setWebClient:主...

Android基础入门教程——WebView缓存问题

本节引言: 现在很多门户类信息网站,比如虎嗅,ifanr,钛媒体等等的APP,简单点说是信息阅读类的APP,很多  都是直接嵌套一个WebView用来显示相关资讯的,这可能就涉及到了WebView的...

mui初级入门教程(四)— 再谈webview,从小白变“大神”!

写在前面 前段时间群里某网友的问题,弹出菜单被子页面挡住了这个老生常谈的问题,其实只要明白webview常见的层级问题,这个问题很容易解释,那么解决方案自然很容易想到,如果没有理解错,html5...

Android基础入门教程——7.5.3 Android 4.4后WebView的一些注意事项

本节参考原文:Android 4.4 中 WebView 使用注意事项.md 从Android 4.4开始,Android中的WebView不再是基于WebKit的,而是开始基于Chromium,这...

webview使用入门(2) 探讨WebChromeClient和WebViewClient的使用

转载请声明 http://bbs.niuzhi.cc/forum.php?mod=viewthread&tid=16&fromuid=2 对于WebChromeClient,WebViewClien...

ios开发入门- WebView使用

目标 : webview使用 在一些移动app中,有时程序会载入 外表的html 界面, android 有 webView ios 有吗, 答案是肯定的, 下面我们来看看 ios 下面的web...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:WebView入门
举报原因:
原因补充:

(最多只允许输入30个字)