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

webview手机浏览器设置_WebView实现不调用浏览器展示网页

当我们的程序需要某些特殊要求时,比如:需要在程序内加载并展示网页,但是又不希望调用浏览器时,我们应该怎么实现呢?
当我们的程序需要某些特殊要求时,比如:需要在程序内加载并展示网页,但是又不希望调用浏览器时,我们应该怎么实现呢?我们都知道浏览网页都是通过浏览器,在地址栏中输入需要浏览的网页网址,或者在搜索栏中输入想要浏览的信息关键词进行搜索浏览。什么是WebView?
  • WebView在Android平台上是一个特殊的View,它能用来显示网页,这个WebView类可以被用来在app中仅仅显示一张在线的网页,当然还可以用来开发浏览器。

  • WebView内部实现是采用渲染引擎(WebKit)来展示view的内容,提供网页前进后退、网页放大、缩小、搜索等功能。

  • WebView是一个基于WebKit引擎、展现Web页面的控件,Android的WebView在低版本和高版本采用了不同的WebKit版本内核。

如何实现WebView?

WebView的实现很简单,在需要显示网页的Activity布局文件中添加一个"WebView"控件,再设置其一些基本属性,代码如下:

属性也很简单,都是一些常用的属性:

  • android:id:给WebView添加唯一标识符,方便找到并进项操作
  • android:layout_width:指定WebView的宽度
  • android:layout_height:指定WebView的高度
添加好"WebView"控件并指定好其基本属性后,在Activity的java文件中对WebView进行配置,代码如下:

import com.example.myandroidui.R;public class WebView_Activity extends AppCompatActivity { private WebView mWebView; @SuppressLint("SetJavascriptEnabled") @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_web_view_); mWebView = findViewById(R.id.webView); mWebView.getSettings().setJavascriptEnabled(true); mWebView.loadUrl("https://www.sogou.com/"); mWebView.setWebViewClient(new WebViewClient()); }}基本代码部分就不进行详细解释了,就是简单的声明并找到WebView,下面我们来一一讲解配置WebView的相关代码:

  • getSettings().setJavascriptEnabled():使用该方法让WebView支持Javascript脚本,因为网页大多都是使用Javascript编写的。
  • loadUrl():在这个方法中传入需要展示的网页URL,也就是网址。
  • setWebViewClient( ):添加这个方法后,在WebView中打开网页时,系统会默认使用WebView进行网页的加载展示,否则会调用浏览器加载网页进行展示。
因为展示网页需要使用手机的访问网络功能,所以我们还需要在"AndroidManifest.xml"文件中添加网络权限,代码如下:

因为Android对数据传输的安全和保密机制,所以我们想要让应用程序使用明文网络流量,就需要在application头标签中加入下面代码(我们这里只是单纯的实现演示一个简单的WebView,所以使用明文流量,在现实程序开发中,数据安全是最重要的):

android:usesCleartextTraffic="true"以上就实现了一个WebView,代码简简单单,我们来运行程序,看一下其是否能不调用浏览器进行网页的加载展示,如下图:9af09bdc009f2ad90e9252d62262c71f.gif通过运行结果可以看到,通过WebView,我们确实实现了在程序内不调用浏览器,进行网页的展示,并且可以在WebView中进行搜索浏览,但是有一个问题不知道大家有没有留意到,当我们点击"Back"键时,Activity直接关闭了,而不是返回上一个页面,这个现象会给用户带来很不好的使用体验,可以设想:当你在浏览器看完小视频时,想返回上一个页面,系统直接给你退出了程序,相信你可能会忍不住口吐芬芳。那该怎么去解决这个问题呢?Android 提供了一个onKeyDown( )方法,我们来重写该方法,代码如下:

@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) { // 如果按下的按键是返回键并且webView可以返回,就执行webView返回 if (keyCode == KeyEvent.KEYCODE_BACK && mWebView.canGoBack()) { mWebView.goBack(); return true; } return super.onKeyDown(keyCode, event);}在上面代码中可以看到,我们在onKeDown( )方法中传入了一个keyCode类型的参数,这个参数就是指我们按下了哪个按钮,在方法中加入if语句进行判断,如果keyCode是返回键,并且WebView能够返回,就执行WebView中的返回。KeyEvent.KEYCODE_BACK就是指返回事件的意思。简而言之就是判断按下的按键如果为返回键,并且网页能返回到上一个页面,就回到上一个页面,而不会退出Activity,现在再来运行一下程序,看一下是否能够在WebView中使用"Back"键实现页面返回功能:415755407692758d70559e16a59e8607.gif通过运行结果我们能发现,在我们在首页打开一个页面,在打开的页面中再打开第三个页面,此时,按下"Back"键,并没有退出Activity,而是返回到了上一个页面,再按下"Back"键,就返回到了首页,在主页中按下"Back"键,退出Activity,这是因为在首页按下"Back"键,此时的WebView没有上一个页面可返回了,所以会结束掉程序。ok,以上就是一个简单的WebView的实现,下篇文章我们来讲解WebView常用的子类和其子类中的常用方法,这些方法能让我们程序中编写的WebView功能更加完善。了解更多的Android学习知识信息,请关注我们的微信公众号:秉空课堂e1738fedbcca8831626ab21325945bb1.png




推荐阅读
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 带添加按钮的GridView,item的删除事件
    先上图片效果;gridView无数据时显示添加按钮,有数据时,第一格显示添加按钮,后面显示数据:布局文件:addr_manage.xml<?xmlve ... [详细]
  • 我收到这个错误.我怎么能在我的情况下解决这个问题?Bitmapcannotberesolvedtoatype发生错误的行publicvoidonPageStart ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文介绍了一款名为TimeSelector的Android日期时间选择器,采用了Material Design风格,可以在Android Studio中通过gradle添加依赖来使用,也可以在Eclipse中下载源码使用。文章详细介绍了TimeSelector的构造方法和参数说明,以及如何使用回调函数来处理选取时间后的操作。同时还提供了示例代码和可选的起始时间和结束时间设置。 ... [详细]
  • 本文详细介绍了Android中的坐标系以及与View相关的方法。首先介绍了Android坐标系和视图坐标系的概念,并通过图示进行了解释。接着提到了View的大小可以超过手机屏幕,并且只有在手机屏幕内才能看到。最后,作者表示将在后续文章中继续探讨与View相关的内容。 ... [详细]
  • 今天就跟大家聊聊有关怎么在Android应用中实现一个换肤功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根 ... [详细]
  • SmartRefreshLayout自定义头部刷新和底部加载
    1.添加依赖implementation‘com.scwang.smartrefresh:SmartRefreshLayout:1.0.3’implementation‘com.s ... [详细]
  • python3 logging
    python3logginghttps:docs.python.org3.5librarylogging.html,先3.5是因为我当前的python版本是3.5之所 ... [详细]
  • 涉及的知识点-ViewGroup的测量与布局-View的测量与布局-滑动冲突的处理-VelocityTracker滑动速率跟踪-Scroller实现弹性滑动-屏幕宽高的获取等实现步 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • Linux环境变量函数getenv、putenv、setenv和unsetenv详解
    本文详细解释了Linux中的环境变量函数getenv、putenv、setenv和unsetenv的用法和功能。通过使用这些函数,可以获取、设置和删除环境变量的值。同时给出了相应的函数原型、参数说明和返回值。通过示例代码演示了如何使用getenv函数获取环境变量的值,并打印出来。 ... [详细]
  •  项目地址https:github.comffmydreamWiCar界面做的很难看,美工方面实在不在行。重点是按钮触摸事件的处理,这里搬了RepeatListener项目代码,例 ... [详细]
  • 开发笔记:图像识别基于主成分分析算法实现人脸二维码识别
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了图像识别基于主成分分析算法实现人脸二维码识别相关的知识,希望对你有一定的参考价值。 ... [详细]
author-avatar
mmlouie
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有