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                 //}
  • 相关阅读:
    #1071 : 小玩具
    #1063 : 缩地
    #1124 : 好矩阵
    hiho#1145 : 幻想乡的日常
    hiho#14
    hiho 毁灭者问题
    西南民大oj(递推)
    西南民大oj(矩阵快速幂)
    西南民大oj(两园交求面积)
    hdu2844(多重背包)
  • 原文地址:https://www.cnblogs.com/aiguozhe/p/3602387.html
Copyright © 2011-2022 走看看