zoukankan      html  css  js  c++  java
  • Hello,Views(四)用Web View实现浏览网页(附源码)

    源码链接已经修正

    前言

    本文翻译自官方教程。(源码下载

    android提供的web view可以让我们不用默认浏览器打开网页,本文将利用web view,在应用中实现网页的访问。

    1.新建工程HelloWebView

    2.打开res/layout/main.xml,添加一个webview,如下修改

    <?xml version="1.0" encoding="utf-8"?> 
    <WebView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id
    ="@+id/webview"
    android:layout_width
    ="fill_parent"
    android:layout_height
    ="fill_parent"
    />

    3.打开HelloWebViewActivity.java 文件,声明一个成员,并且重写onCreate()方法:

    WebView mWebView;

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    mWebView = (WebView) findViewById(R.id.webView1);
    mWebView.getSettings().setJavaScriptEnabled(true);
    mWebView.loadUrl("http://www.cnblogs.com");
    mWebView.setWebViewClient(new HelloWebViewClient());
    }

    4.在清单文件中,设置网络访问权限

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

    5.找到我们的Activity,设置无标题模式android:theme="@android:style/Theme.NoTitleBar"。

    <activity 
    android:name=".HelloWebViewActivity"
    android:label
    ="@string/app_name"
    android:theme
    ="@android:style/Theme.NoTitleBar" >
    <intent-filter>
    <action android:name="android.intent.action.MAIN" />

    <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    </activity>

    6.在Android中打开网页时会自动调用系统的浏览器,而这是我们不希望出现的。那么我们就要自定义一个浏览网页的内类,这个类东西比较少,我们定义为内部类,它扩展WebViewClient接口:

    private class HelloWebViewClient extends WebViewClient 
    {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url)
    {
    view.loadUrl(url);
    return true;
    }
    }



    7.现在回到HelloWebViewActivity的oncreate()方法里面,在末尾添加:

    mWebView.setWebViewClient(new HelloWebViewClient());


    8.到这已经实现在应用的内部浏览网页,但是我们还缺少返回的功能,如果我们近入一个子网页后,又想返回上一页怎么办,这时需要重写按钮返回事件。

    @Override 
    public boolean onKeyDown(int keyCode, KeyEvent event)
    {
    if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack())
    {
    mWebView.goBack();
    return true;
    }
    return super.onKeyDown(keyCode, event);
    }



    9.全部OK,可以运行了。总体而言要实现本文的功能是比较简单的,但是 ,我们这样做的效率不是很高,如果对访问的缓存功能进行优化,就可以做成一个自己的手机浏览器了。(源码下载

  • 相关阅读:
    Oracle Core 学习笔记二 Transactions 和 Consistency 说明
    Oracle AUTO_SPACE_ADVISOR_JOB 说明
    Windows 下 ftp 上传文件 脚本
    Oracle 11g 中 Direct path reads 特性 说明
    Linux 使用 wget 下载 Oracle 软件说明
    Oracle 10g read by other session 等待 说明
    Oracle 11g RAC INS06006 Passwordless SSH connectivity not set up between the following node(s) 解决方法
    SecureCRT 工具 上传下载数据 与 ASCII、Xmodem、Ymodem 、Zmodem 说明
    Oracle RAC root.sh 报错 Timed out waiting for the CRS stack to start 解决方法
    Oracle RESETLOGS 和 NORESETLOGS 区别说明
  • 原文地址:https://www.cnblogs.com/avenwu/p/2359098.html
Copyright © 2011-2022 走看看