我使用了一些 WebView 类的方法来执行以下功能。

loadUrl():从 url 加载网页

canGoBack():检查前一页历史记录是否可用

goBack():返回上一页

canGoForward():检查下一页历史记录是否可用

goForward():转到下一页

reload():重新加载当前页面

stopLoading():停止加载当前页面

此浏览器将允许您执行以下操作。

  • 打开网页网址。
  • 取消加载网页。
  • 转到上一个或下一个网页。
  • 重新加载网页。
  • 在进度条中查看网页的加载进度。

创建一个包名为com.androidbrowser的 android 项目,并在各自的文件中添加以下代码。

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"android:paddingLeft="5dp"android:paddingTop="5dp"android:paddingRight="5dp"android:paddingBottom="5dp"tools:context=".MainActivity"><ProgressBarandroid:id="@+id/progress"style="?android:attr/progressBarStyleHorizontal"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_alignParentTop="true"android:indeterminate="false"android:max="100"android:progress="1"android:visibility="gone" /><RelativeLayoutandroid:id="@+id/topBar"android:layout_width="match_parent"android:layout_height="35dp"android:layout_below="@+id/progress"><EditTextandroid:id="@+id/urlBox"android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="Type URL and Press Enter..."android:imeOptions="actionSearch"android:paddingLeft="5dp"android:singleLine="true" /><Buttonandroid:id="@+id/cancel"android:layout_width="35dp"android:layout_height="wrap_content"android:layout_alignParentRight="true"android:text="x"android:visibility="visible" /></RelativeLayout><WebViewandroid:id="@+id/webView"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_above="@+id/bottomBar"android:layout_below="@+id/topBar" /><RelativeLayoutandroid:id="@+id/bottomBar"android:layout_width="match_parent"android:layout_height="50dp"android:layout_alignParentBottom="true"android:gravity="center"><Buttonandroid:id="@+id/back"android:layout_width="wrap_content"android:layout_height="match_parent"android:layout_marginRight="5dp"android:text="Back" /><Buttonandroid:id="@+id/forward"android:layout_width="wrap_content"android:layout_height="match_parent"android:layout_marginRight="5dp"android:layout_toRightOf="@+id/back"android:text="Forward" /><Buttonandroid:id="@+id/refresh"android:layout_width="wrap_content"android:layout_height="match_parent"android:layout_toRightOf="@id/forward"android:text="Reload" /></RelativeLayout>
</RelativeLayout>

MainActivity.java

package com.androidbrowser;import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ProgressBar;public class MainActivity extends Activity {EditText urlBox;WebView webView;Button back, forward, refresh, cancel;ProgressBar progress;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);urlBox = (EditText) findViewById(R.id.urlBox);webView = (WebView) findViewById(R.id.webView);back = (Button) findViewById(R.id.back);forward = (Button) findViewById(R.id.forward);refresh = (Button) findViewById(R.id.refresh);cancel = (Button) findViewById(R.id.cancel);progress = (ProgressBar) findViewById(R.id.progress);webView.setWebViewClient(new CustomWebViewClient());webView.setWebChromeClient(new CustomWebChromeClient());urlBox.setOnKeyListener(new View.OnKeyListener() {@Overridepublic boolean onKey(View v, int keyCode, KeyEvent event) {//when enter is pressed in edittext, start loading the pageif (keyCode == KeyEvent.KEYCODE_ENTER) {webView.loadUrl(urlBox.getText().toString());return true;}return false;}});//go to previous pageback.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if (webView.canGoBack()) {webView.goBack();}}});//go to next pageforward.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if (webView.canGoForward()) {webView.goForward();}}});//reload pagerefresh.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {webView.reload();}});//cancel loading pagecancel.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {webView.stopLoading();}});}public class CustomWebViewClient extends WebViewClient {@Overridepublic boolean shouldOverrideUrlLoading(WebView view, String url) {view.loadUrl(url);return true;}}public class CustomWebChromeClient extends WebChromeClient {@Overridepublic void onProgressChanged(WebView view, int newProgress) {progress.setProgress(newProgress);urlBox.setText(view.getUrl());if (newProgress == 100) {cancel.setVisibility(View.GONE);progress.setVisibility(View.GONE);} else {cancel.setVisibility(View.VISIBLE);progress.setVisibility(View.VISIBLE);}}}
}

注意:确保添加 Internet 访问权限。只需在AndroidManifest.xml文件中添加以下行。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.androidbrowser"><uses-permission android:name="android.permission.INTERNET" /><applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/Theme.AndroidBrowser"android:usesCleartextTraffic="true"><activityandroid:name=".MainActivity"android:exported="true"android:label="@string/app_name"android:theme="@style/Theme.AndroidBrowser.NoActionBar"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application></manifest>

就是这样,你已经做到了。只需运行该项目并享受浏览互联网。

输出

如何在 Android 中制作简单的浏览器相关推荐

  1. android怎么实现文字制作,如何在Android中制作传统的蒙古文字TextView

    更新 下面的解决方案的问题是镜像字体中未包含的任何字符(特别是中文)将显示在后面. 老答案 蒙古语字体都是以字形的方向与英语相同的方向制作的,即从左到右.这允许将蒙古语单词添加到英语,中文或西里尔文本 ...

  2. android 自定义指南针,如何在android中制作自定义指南针视图

    上述代码已被弃用.更新的代码可用 here XML布局activty_main android:layout_width="match_parent" android:layout ...

  3. 如何在android中创建自定义对话框?

    本文翻译自:How to create a Custom Dialog box in android? I want to create a custom dialog box like below ...

  4. 让一个图片填满一个控件_如何在Android中实现一个全景图控件(二)

    一.背景 在 如何在Android中实现一个全景图控件(一)中,介绍了项目的一些基本情况(有 demo 演示),如果项目对你有帮助,希望文章赏个赞,项目 star 一下. 项目地址:https://g ...

  5. android view gesturedetector,如何在Android中利用 GestureDetector进行手势检测

    如何在Android中利用 GestureDetector进行手势检测 发布时间:2020-11-26 16:15:21 来源:亿速云 阅读:92 作者:Leah 今天就跟大家聊聊有关如何在Andro ...

  6. android开发 转跳功能,如何在Android中利用Intent实现一个页面跳转功能

    如何在Android中利用Intent实现一个页面跳转功能 发布时间:2021-02-20 17:06:31 来源:亿速云 阅读:113 作者:Leah 本篇文章为大家展示了如何在Android中利用 ...

  7. android页面布局计算机,Android Studio制作简单计算器App

    Android Studio制作简单计算器App 计算机界面如图: 程序设计步骤: (1)在布局文件中声明编辑文件框EditText,按钮Button等组件. (2)在MainActivity中获取组 ...

  8. android打电话的intent,如何在Android中使用intent打电话?

    如何在Android中使用intent打电话? 我正在使用以下代码在Android中进行调用,但它给了我安全例外,请帮忙. posted_by = "111-333-222-4"; ...

  9. 如何在 3dMax 中制作游戏中的战斧模型?

    继续给大家分享3dMax教程:如何在3dsMax中制作战斧教程. 介绍 大家好!今天想和大家分享的是用3ds Max制作一把战斧,分享一下制作过程中用到的一些技巧和技巧.这是一个比较基础的教程,包括建 ...

最新文章

  1. Google排名第一的技术,引数十万人关注!网友:差点我就放弃了!
  2. Microsoft Visual Studio 2010 Service Pack 1
  3. [深搜]24点--改进版本
  4. matlab读取.xyz文件及任意有间隔符数据
  5. VTK:几何对象之Sphere
  6. 32位PLSQL Developer无法登录Oracle 11g 64位
  7. 2000年考研英语阅读理解文章四
  8. Android系统原生应用解析之桌面闹钟及相关原理应用之时钟任务的应用(一)
  9. bottleneck resnet网络_深度学习|图像分类:ResNet(二)
  10. 微型计算机2014年9月下,2014年9月计算机应用基础》网络教育统考真题.doc
  11. Unity基础UI框架
  12. 使用github安装atom插件
  13. 十大气势背景音乐(适合战队,广告招商会场用)
  14. 备考通信复试过程中的一些知识点总结梳理——码间干扰与衰落
  15. 【线程 锁】ExecutorService的submit方法使用
  16. 【转帖】UDIMM、RDIMM、SODIMM以及LRDIMM的区别
  17. Foxmail签名和模板的使用
  18. SUN 的Java认证体系
  19. 洞房花烛夜山西人必喝的和气拌汤——西红柿鸡蛋拌汤
  20. Java运算符——————03

热门文章

  1. webpack系统学习(六)打包分析,Preload和Prefetch
  2. tf.py_func()函数
  3. Scala / Java - 采用 MD5 加盐 实现 id 均匀分组
  4. php重定向网页,php重定向网页
  5. java grabcut_在Opencv-java中优化GrabCut的性能
  6. ue4 unreal 关于 纯函数 pure function 执行问题 需要注意的地方 异常性能消耗 反复调用
  7. Linux内核IOREMAP驱动
  8. 终于,闯进了那扇门!
  9. k8s学习笔记之 k8s架构的简单了解(转载网上电子书)
  10. 数据管理技术发展的三个阶段