热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

新发的日常小实验——使用AndroidStudio自制一个WebView浏览器

文章目录一、前言二、具体操作1、创建工程2、创建layout3、添加WebView控件4、创建webview界面的JavaClass5、webview逻辑代码6、从MainActi

文章目录

      • 一、前言
      • 二、具体操作
        • 1、创建工程
        • 2、创建layout
        • 3、添加WebView控件
        • 4、创建webview界面的Java Class
        • 5、webview逻辑代码
        • 6、从MainActivity启动MyWebViewActivity
        • 7、配置AndroidManifest.xml
      • 三、运行测试


一、前言

做个小实验,使用AndroidStudio制作一个简单的WebView浏览器。
最终效果

在这里插入图片描述

二、具体操作


1、创建工程

点击菜单Fiew > New > New Module...
在这里插入图片描述
选择Phone & Tablet Module
在这里插入图片描述
名字叫WebViewDemo
在这里插入图片描述
选择Empty Activity
在这里插入图片描述
ActivityMainActivity
在这里插入图片描述
创建成功
在这里插入图片描述

2、创建layout

layout文件夹鼠标右键,点击New > Layout resource file
在这里插入图片描述
取名为activity_webview,点击OK
在这里插入图片描述

3、添加WebView控件

拖动WebView控件到界面中
在这里插入图片描述
编辑idmywebview
在这里插入图片描述

4、创建webview界面的Java Class

在包文件上鼠标右键,New > Java Class
在这里插入图片描述
类名叫MyWebViewActivity,父类为AppCompatActivity
在这里插入图片描述
重写onCreate函数,指明布局文件为上面创建的activity_webview
在这里插入图片描述

5、webview逻辑代码

核心就是loadUrl接口,具体代码如下:

package com.example.webviewdemo;import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.webkit.WebView;
import android.webkit.WebViewClient;import androidx.appcompat.app.AppCompatActivity;public class MyWebViewActivity extends AppCompatActivity {private WebView webView ;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_webview);//初始化浏览器initWebView();//获取url,这个参数从MainActivity传过来的Intent intent = getIntent();String url = intent.getStringExtra("url");//访问urlLoadUrl(url);}//初始化浏览器private void initWebView() {webView = (WebView) findViewById(R.id.mywebview);WebSettings webSettings = webView.getSettings();webView.setVerticalScrollBarEnabled(false);//设置缓存webSettings.setSaveFormData(false);webSettings.setSavePassword(false);//设置JS支持//webSettings.setJavascriptEnabled(true);//设置支持缩放变焦webSettings.setBuiltInZoomControls(false);//设置是否支持缩放webSettings.setSupportZoom(false);//设置是否允许JS打开新窗口webSettings.setJavascriptCanOpenWindowsAutomatically(true);// 修复一些机型webview无法点击webView.requestFocus(View.FOCUS_DOWN);webView.setOnTouchListener(new View.OnTouchListener() {@Overridepublic boolean onTouch(View v, MotionEvent event) {// TODO Auto-generated method stubswitch (event.getAction()) {case MotionEvent.ACTION_DOWN:case MotionEvent.ACTION_UP:if (!v.hasFocus()) {v.requestFocus();}break;}return false;}});webView.setWebViewClient(new WebViewClient() {@Overridepublic boolean shouldOverrideUrlLoading(WebView view, String url) {if(url.startsWith("http:") || url.startsWith("https:") ) {view.loadUrl(url);return false;}else{Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));startActivity(intent);return true;}}});}//访问urlprivate void LoadUrl(String url){webView.loadUrl(url);}
}

6、从MainActivity启动MyWebViewActivity

MainActivity界面中加个按钮,点击的时候启动MyWebViewActivity
在这里插入图片描述

package com.example.webviewdemo;import androidx.appcompat.app.AppCompatActivity;import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button btn = (Button)findViewById(R.id.button);btn.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//url参数通过Intent 传递过去String url = "http://www.baidu.com";Intent intent=new Intent(MainActivity.this,MyWebViewActivity.class);intent.putExtra("url", url);//启动MyWebViewActivitystartActivity(intent);}});}
}

7、配置AndroidManifest.xml

添加INTERNET权限

<uses-permission android:name&#61;"android.permission.INTERNET">uses-permission>

application节点中添加&#xff0c;支持https

android:usesCleartextTraffic&#61;"true"

完整的AndroidManifest.xml如下


<manifest xmlns:android&#61;"http://schemas.android.com/apk/res/android"package&#61;"com.example.webviewdemo"><uses-permission android:name&#61;"android.permission.INTERNET">uses-permission><applicationandroid:allowBackup&#61;"true"android:icon&#61;"&#64;mipmap/ic_launcher"android:label&#61;"&#64;string/app_name"android:roundIcon&#61;"&#64;mipmap/ic_launcher_round"android:supportsRtl&#61;"true"android:usesCleartextTraffic&#61;"true"android:theme&#61;"&#64;style/AppTheme"><activity android:name&#61;".MainActivity"><intent-filter><action android:name&#61;"android.intent.action.MAIN" /><category android:name&#61;"android.intent.category.LAUNCHER" />intent-filter>activity><activity android:name&#61;".MyWebViewActivity">activity>application>
manifest>

三、运行测试

在这里插入图片描述


推荐阅读
  • 本文介绍了一种自定义的Android圆形进度条视图,支持在进度条上显示数字,并在圆心位置展示文字内容。通过自定义绘图和组件组合的方式实现,详细展示了自定义View的开发流程和关键技术点。示例代码和效果展示将在文章末尾提供。 ... [详细]
  • 使用 ListView 浏览安卓系统中的回收站文件 ... [详细]
  • 在处理 XML 数据时,如果需要解析 `` 标签的内容,可以采用 Pull 解析方法。Pull 解析是一种高效的 XML 解析方式,适用于流式数据处理。具体实现中,可以通过 Java 的 `XmlPullParser` 或其他类似的库来逐步读取和解析 XML 文档中的 `` 元素。这样不仅能够提高解析效率,还能减少内存占用。本文将详细介绍如何使用 Pull 解析方法来提取 `` 标签的内容,并提供一个示例代码,帮助开发者快速解决问题。 ... [详细]
  • Spring – Bean Life Cycle
    Spring – Bean Life Cycle ... [详细]
  • 实验九:使用SharedPreferences存储简单数据
    本实验旨在帮助学生理解和掌握使用SharedPreferences存储和读取简单数据的方法,包括程序参数和用户选项。 ... [详细]
  • 在Java Web服务开发中,Apache CXF 和 Axis2 是两个广泛使用的框架。CXF 由于其与 Spring 框架的无缝集成能力,以及更简便的部署方式,成为了许多开发者的首选。本文将详细介绍如何使用 CXF 框架进行 Web 服务的开发,包括环境搭建、服务发布和客户端调用等关键步骤,为开发者提供一个全面的实践指南。 ... [详细]
  • DAO(Data Access Object)模式是一种用于抽象和封装所有对数据库或其他持久化机制访问的方法,它通过提供一个统一的接口来隐藏底层数据访问的复杂性。 ... [详细]
  • [转]doc,ppt,xls文件格式转PDF格式http:blog.csdn.netlee353086articledetails7920355确实好用。需要注意的是#import ... [详细]
  • 本文介绍如何使用 Python 的 DOM 和 SAX 方法解析 XML 文件,并通过示例展示了如何动态创建数据库表和处理大量数据的实时插入。 ... [详细]
  • 属性类 `Properties` 是 `Hashtable` 类的子类,用于存储键值对形式的数据。该类在 Java 中广泛应用于配置文件的读取与写入,支持字符串类型的键和值。通过 `Properties` 类,开发者可以方便地进行配置信息的管理,确保应用程序的灵活性和可维护性。此外,`Properties` 类还提供了加载和保存属性文件的方法,使其在实际开发中具有较高的实用价值。 ... [详细]
  • Python 程序转换为 EXE 文件:详细解析 .py 脚本打包成独立可执行文件的方法与技巧
    在开发了几个简单的爬虫 Python 程序后,我决定将其封装成独立的可执行文件以便于分发和使用。为了实现这一目标,首先需要解决的是如何将 Python 脚本转换为 EXE 文件。在这个过程中,我选择了 Qt 作为 GUI 框架,因为之前对此并不熟悉,希望通过这个项目进一步学习和掌握 Qt 的基本用法。本文将详细介绍从 .py 脚本到 EXE 文件的整个过程,包括所需工具、具体步骤以及常见问题的解决方案。 ... [详细]
  • 在Android平台中,播放音频的采样率通常固定为44.1kHz,而录音的采样率则固定为8kHz。为了确保音频设备的正常工作,底层驱动必须预先设定这些固定的采样率。当上层应用提供的采样率与这些预设值不匹配时,需要通过重采样(resample)技术来调整采样率,以保证音频数据的正确处理和传输。本文将详细探讨FFMpeg在音频处理中的基础理论及重采样技术的应用。 ... [详细]
  • 在Java项目中,当两个文件进行互相调用时出现了函数错误。具体问题出现在 `MainFrame.java` 文件中,该文件位于 `cn.javass.bookmgr` 包下,并且导入了 `java.awt.BorderLayout` 和 `java.awt.Event` 等相关类。为了确保项目的正常运行,请求提供专业的解决方案,以解决函数调用中的错误。建议从类路径、依赖关系和方法签名等方面入手,进行全面排查和调试。 ... [详细]
  • 在Android开发中,实现多点触控功能需要使用`OnTouchListener`监听器来捕获触摸事件,并在`onTouch`方法中进行详细的事件处理。为了优化多点触控的交互体验,开发者可以通过识别不同的触摸手势(如缩放、旋转等)并进行相应的逻辑处理。此外,还可以结合`MotionEvent`类提供的方法,如`getPointerCount()`和`getPointerId()`,来精确控制每个触点的行为,从而提升用户操作的流畅性和响应性。 ... [详细]
  • 本文探讨了资源访问的学习路径与方法,旨在帮助学习者更高效地获取和利用各类资源。通过分析不同资源的特点和应用场景,提出了多种实用的学习策略和技术手段,为学习者提供了系统的指导和建议。 ... [详细]
author-avatar
互相体谅知足常乐
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有