我使用了一些 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. CSS5:移动端页面(响应式)
  2. linux 云主机 卡顿 排查过程
  3. 用友现存量和可用量_护肤品用量不对,不仅变相浪费还有可能……
  4. 基于visual c++之windows核心编程代码分析(42)windows下进程的身份切换
  5. 经典C语言程序100例之七六
  6. 高性能MySQL(第二版)第三章 架构优化和索引(上)——读书笔记
  7. pycharm2019新建python文件_PyCharm 2019安装教程
  8. 你敢信?FBI 的190万条恐怖分子监控名单竟无密码保护且不慎遭暴露
  9. Hive 复制分区表和数据
  10. 12_电话拨号器_界面实现
  11. 2022-2028年全球与中国口琴行业发展趋势及竞争策略研究
  12. 总结了一套比较新的面试题挺全面的,多方面都有涉及到
  13. Mac 下终端运行C++
  14. 用python造数据
  15. 搭建用户增长体系,这5个方法告诉你怎么做
  16. 一个完整的搜索系统 - God bless you - 博客园
  17. Python读取MIT-BIH数据中心电信号
  18. Junit - 忽略测试(Ignore Test)
  19. 生活是一种态度,得失是一种心境
  20. iphone11夜景鬼影分析

热门文章

  1. LED的IO复用方案
  2. prefetch 和preload_使用 Preload/Prefetch 优化你的应用
  3. 翻车现场:我用pytorch和GAN做了一个生成神奇宝贝的失败模型
  4. C语言用整数1~12依次表示1~12月,由键盘输入一个月份,输出对应的季节英文名称
  5. 高通 Android 12/13 去掉耳机音量安全弹窗
  6. 重装ubuntu的流程整理
  7. 猜猜今天是什么日子?
  8. 爬虫python和c语言区别_爬虫概述 - Python教程 - C语言网
  9. 在PS6中将bmp图片背景变成透明,增加alpha通道,可在unity中使用
  10. 啥?Flutter也能整3D了吗?我靠,竟然是这样的操作