博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android进阶2之WebView(浏览器)
阅读量:7002 次
发布时间:2019-06-27

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

一 概述

WebView是一个显示网页的视图。它依据于你自己的网页浏览器或者只是显示在你的Activity中的内容。
它使用了WebKit渲染引擎显示网页。它包括一些方法:通过浏览记录向前和向后浏览,放大,缩小,进行文本搜索等等。
实现内置的放大缩小使用 WebSettings.setBuiltInZoomControls(boolean)。
注意:为了使您的Activity能够上网,在WebView加载网页,你必须添加 INTERNET permissions 到你的 Android Manifest文件中去。
<uses-permission android:name="android.permission.INTERNET" />
二 操作步骤:
1.在要Activity中实例化WebView组件:WebView webView = new WebView(this);
   你也可以在布局文件中声明WebView,在Activity中实例化WebView。
2.调用WebView的loadUrl()方法,设置WevView要显示的网页:
   互联网用:webView.loadUrl("http://www.baidu.com");
   本地文件用:webView.loadUrl("file:///android_asset/XX.html"); 本地文件存放在:assets 文件中
3.调用Activity的setContentView( )方法来显示网页视图
三 注意事项
在开发过程中应该注意几点: 
    1.AndroidManifest.xml中必须添加权限"android.permission.INTERNET"。
<uses-permission android:name="android.permission.INTERNET" />
    2.如果访问的页面中有Javascript,则webview必须设置支持Javascript。
       webview.getSettings().setJavaScriptEnabled(true);
    3.如果页面中链接,如果希望点击链接继续在当前browser中响应,而不是新开Android的系统browser中响应该链接,必须覆盖 webview的WebViewClient对象。
  webview.setWebViewClient(new WebViewClient(){ public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } });

      4.如果不做任何处理,浏览网页,点击系统“Back”键,整个Browser会调用finish()而结束自身,如果希望浏览的网 页回退而不是推出浏览器,需要在当前Activity中处理并消费掉该Back事件。

public boolean onKeyDown(int keyCode, KeyEvent event) { if ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) { webview.goBack(); //goBack()表示返回WebView的上一页面 return true; } return false; }

具体实现:

package xiaosi.webview; import android.app.Activity; import android.os.Bundle; import android.view.KeyEvent; import android.webkit.WebView; import android.webkit.WebViewClient; public class MyWebViewActivity extends Activity { private WebView webview; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); webview = (WebView) findViewById(R.id.webview); //设置WebView属性,能够执行Javascript脚本 webview.getSettings().setJavaScriptEnabled(true); //加载需要显示的网页 webview.loadUrl("http://www.baidu.com/"); //设置Web视图 webview.setWebViewClient(new HelloWebViewClient ()); } @Override //设置回退 public boolean onKeyDown(int keyCode, KeyEvent event) { if ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) { webview.goBack(); //goBack()表示返回WebView的上一页面 return true; } return false; } //Web视图 private class HelloWebViewClient extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } } }

main.xml

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

转载地址:http://ujrvl.baihongyu.com/

你可能感兴趣的文章
响应式面包屑菜单
查看>>
揭秘天猫双11背后:国内首次IPv6大规模商用实践
查看>>
window bat 批处理 修改注册表键值
查看>>
WPF触控程序开发(四)——MultiTouchVista_-_second_release_-_refresh_2的救赎
查看>>
mysql @value := 用法
查看>>
ASP.NET CORE系列【二】使用Entity Framework Core进行增删改查
查看>>
C# 判断用户是否对路径拥有访问权限
查看>>
Dubbo 源码分析 - 服务导出
查看>>
sqlserver 存储过程中使用临时表到底会不会导致重编译
查看>>
webpack-cli解决办法
查看>>
防火墙
查看>>
Confluence 6 自定义默认空间内容
查看>>
[剑指offer] 连续子数组的最大和
查看>>
HDU 2147 kiki's game(规律,博弈)
查看>>
TP5视频上传,商城增加视频上传功能
查看>>
Markdown语法学习记录
查看>>
Maupassant主题优化、屠城hexo主题优化版
查看>>
python:深入pip的安装源
查看>>
《算经十书》
查看>>
ant build文件详解
查看>>