zoukankan      html  css  js  c++  java
  • android学习日记15--WebView(网络视图)

    一、WebView

    1、简述

    WebView(网络视图)内置WebKit引擎,能加载显示网页,还支持JS,并且能够在Android平台使用AJAX
    WebView可以在布局中声明,也可以在Activity中直接实例化

    2、主要步骤

    使用WebView 的主要步骤:
    1.在布局文件中声明WebView,通过findViewById或在Activity中实例化WebView组件:WebView webView = new WebView(this);
    2.调用WebView的loadUrl()方法,设置WevView要显示的网页:
    互联网用:webView.loadUrl("http://www.google.com");
    本地文件用:webView.loadUrl("file:///android_asset/Todos.html"); 本地文件存放在:assets 文件中
    3.调用Activity的setContentView( )方法来显示网页视图
    4.用WebView点链接看了很多页以后为了让WebView支持回退功能,需要覆盖覆盖Activity类的onKeyDown()方法,如果不做任何处理,点击系统回退剪键,整个浏览器会调用finish()而结束自身,而不是回退到上一页面
    5.需要在AndroidManifest.xml文件中添加权限,否则会出现Web page not available错误。
    <uses-permission android:name="android.permission.INTERNET" />

    3、实例演示

    Activity代码:

     1 @Override
     2     public void onCreate(Bundle savedInstanceState) {
     3         super.onCreate(savedInstanceState);
     4         getWindow().requestFeature(Window.FEATURE_PROGRESS);
     5         setContentView(R.layout.activity_main);
     6         wv = (WebView) findViewById(R.id.wv);
     7         wv.setWebChromeClient(new WebChromeClient() { // 为WebView设置WebChromeClient
     8             @Override
     9             public void onProgressChanged(WebView view, int newProgress) {// 重写onProgressChanged方法
    10                 MainActivity.this.setProgress(newProgress * 100);
    11             }
    12         });
    13         wv.setWebViewClient(new WebViewClient() { // 为WebView设置WebViewClient
    14             public void onReceivedError(WebView view, int errorCode,
    15                     String description, String failingUrl) {// 重写onReceivedError方法
    16                 Toast.makeText(MainActivity.this, "Sorry!" + description,
    17                         Toast.LENGTH_SHORT).show();
    18             }
    19         });
    20         Button btn = (Button) findViewById(R.id.btn); // 获取Button对象
    21         btn.setOnClickListener(new View.OnClickListener() { // 为Button对象设置OnClickListener监听器
    22             @Override
    23             public void onClick(View v) {
    24 
    25                 EditText et = (EditText) findViewById(R.id.et); // 获得WebView对象
    26                 String url = et.getText().toString().trim();
    27                 if (URLUtil.isNetworkUrl(url)) { // 判断是否是网址
    28                     wv.loadUrl(url);
    29                 } else {
    30                     Toast.makeText(MainActivity.this, "对不起,您输入的网址有错。",
    31                             Toast.LENGTH_SHORT).show();
    32                     et.requestFocus(); // 将焦点移到EditText
    33                 }
    34             }
    35         });
    36         // 设置前进后退按钮
    37         Button btnForward = (Button) findViewById(R.id.btnForward);
    38         btnForward.setOnClickListener(new View.OnClickListener() {
    39             @Override
    40             public void onClick(View v) {
    41                 if (wv.canGoForward()) { // 判断是否能够前进
    42                     wv.goForward();
    43                 } else {
    44                     Toast.makeText(MainActivity.this, "对不起,您现在不能前进!",
    45                             Toast.LENGTH_SHORT).show();
    46                 }
    47             }
    48         });
    49         Button btnBack = (Button) findViewById(R.id.btnBack);
    50         btnBack.setOnClickListener(new View.OnClickListener() {
    51             @Override
    52             public void onClick(View v) {
    53                 if (wv.canGoBack()) { // 判断是否能够前进
    54                     wv.goBack();
    55                 } else {
    56                     Toast.makeText(MainActivity.this, "对不起,您现在不能后退!",
    57                             Toast.LENGTH_SHORT).show();
    58                 }
    59             }
    60         });
    61     }

    第一次输入网址运行报错:

    原因是没有在AndroidManifest配置权限,加入权限:

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

    再次输入博客园首页网址点击'浏览':

    竟然出现一张美女图片,无意中发现个彩蛋,网址输成http://www.cnblog.com/  ,漏了个s

    重新输入网址浏览:

    上面有个进度条显示网页加载进度,多输入几个网址测试'前进','后退'的功能。

    再输入本地文件测试,显示以前写的待办事项网页

    注意:在输入本地文件网址时,代码要把判断是否是网址URLUtil.isNetworkUrl(url)去掉,因为不会识别file:///为网址

    1                 //if (URLUtil.isNetworkUrl(url)) { // 判断是否是网址
    2                     wv.loadUrl(url);
    3                 //} else {
    4                 //    Toast.makeText(MainActivity.this, "对不起,您输入的网址有错。",
    5                 //            Toast.LENGTH_SHORT).show();
    6                 //    et.requestFocus(); // 将焦点移到EditText
    7                 //}
  • 相关阅读:
    20200226 Java IO流——廖雪峰
    20200225 Java 多线程(2)-廖雪峰
    20200225 Java 多线程(1)-廖雪峰
    20200224 尚硅谷ElasticSearch【归档】
    20200224 一 概述
    20200222 尚硅谷Dubbo【归档】
    20200222 四、dubbo原理
    Improved robustness of reinforcement learning policies upon conversion to spiking neuronal network platforms applied to Atari Breakout game
    Reinforcement learning in populations of spiking neurons
    Solving the Distal Reward Problem through Linkage of STDP and Dopamine Signaling
  • 原文地址:https://www.cnblogs.com/aiguozhe/p/3602387.html
Copyright © 2011-2022 走看看