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

posted @   小文字  阅读(3215)  评论(2编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示