[译文]Web View - Android SDK Tutorials系列
发布日期:2021-08-19 11:10:01 浏览次数:1 分类:技术文章

本文共 2223 字,大约阅读时间需要 7 分钟。

Web View

WebView允许你创建自己的窗口来浏览网页(甚至是开发一个完整的浏览器)。本教程里,你将创建一个简单的Activity,能够浏览和导航网页。

  1. 创建一个项目:HelloWebView.
  2. 修改res/layout/main.xml 文件内容如下:
          
          
           android:id="@+id/webview"
           
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"/>
  3. 打开HelloWebView.java ,在类的顶部声明一个WebView对象:
    WebView mWebView;

    修改onCreate()方法如下:

    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    mWebView = (WebView) findViewById(R.id.webview);
    mWebView.getSettings().setJavaScriptEnabled(true);
    mWebView.loadUrl("http://www.google.com");}

    通过Activity界面里的WebView元素来初始化成员WebView;调用getSettings()方法获得WebSettings对象,然后调用其setJavaScriptEnabled(boolean)方法设置WebView支持JavaScript。最后,调用loadUrl(String)方法加载一个初始网页。

  4. 因为这个应用要访问互联网,需要在Android manifest文件里设置相应的权限。打开AndroidManifest.xml 文件,将下面的内容添加为节点<manifest>的元素:
          
  5. 同时在manifest文件里,给Activity设置"NoTitleBar"主题去除标题栏,为网页显示留出更大空间:
          
            android:theme="@android:style/Theme.NoTitleBar">
          
  6. 运行应用。

    你现在拥有一个最简单的页面浏览器,其实它还称不上一个真正的浏览器,一旦你点击一个链接,默认的Android浏览器会处理这个Intent并打开新的页面,因为这个Activity技术上还没有处理打开新链接的请求。除了添加一个intent filter来打开网页,你可以重写WebViewClient类来让Activity处理它自己的URL请求。

  7. 在类HelloWebView里面内嵌一个类:
    private class HelloWebViewClient extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
    view.loadUrl(url);
    return true;
    }}
  8. 在onCreate(Bundle)方法末尾,设置上面自定义的类HelloWebViewClient的实例作为WebViewClient:
    mWebView.setWebViewClient(new HelloWebViewClient());

    这行代码让在初始WebView对象里面打开任何网页。

    这行代码创建一个WebViewClient,让WebView对象自己加载自身被点击的URL。

    重新运行应用,新页面也在当前Activity被加载。但是你不能返回先前打开的页面。为了实现这个功能,需要处理设备上的BACK按钮来回到前面的页面,而不是退出应用。

  9. 为了处理BACK按钮点击事件,在类HelloWebView里面添加下面的方法:
    @Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {
    if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {
    mWebView.goBack();
    return true;
    }
    return super.onKeyDown(keyCode, event);}

    在当前Activity里面,无论何时按下一个按钮,都会调用 onKeyDown(int, KeyEvent) 回调函数。条件语句使用KeyEvent来检查按下的是否是BACK按钮,并检查WebView是否真的能够返回上一个页面(是否有浏览历史)。如果两个条件都满足,就调用goBack()方法来返回WebView历史的上一步。返回true表示这个事件已经被处理过了。如果条件不满足,事件会被发送回系统。

  10. 重新运行应用。现在就能够在当前Activity打开新的连接,并能导航返回前面浏览的页面。

当打开应用,应该能看到如下画面:

转载于:https://www.cnblogs.com/ynding/archive/2011/12/08/2280549.html

转载地址:https://blog.csdn.net/weixin_30924087/article/details/96983512 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Could not resolve dependencies for project, Failed to read artifact descriptor for
下一篇:css 优先级

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.172.111.71]2022年05月22日 09时57分58秒