百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

关于android的webView的内容 android webview webgl

suiw9 2024-11-05 12:34 40 浏览 0 评论

就目前的网速环境而言,应用程序内加载web的速度是非常的快的,所以当一个APP上的页面需要定期的变动的时候就可以尝试使用webView来进行实现。

其实平时使用的APP中很多都是用到了webView的界面,例如很多的电商网页都使用了webView的功能。

关于webView的定义,在谷歌的网站上给出的是 :一个能够展示web界面的View,

最初始的定义中,webView是不能够使用JavaScript并且其中的很多web页面的错误会自动忽视,如果只是展示一些最基本的HTML页面做为UI的一部分那么这样是OK的。但是这样是不允许界面进行一些交互的,因为这只是最进本的HTML网页并没有JavaScript用来与之交互。

其中WebView最常使用的方法有

加载网页的

//方式1. 加载一个网页:

webView.loadUrl("http://www.google.com/");

//方式2:加载apk包中的html页面

webView.loadUrl("file:///android_asset/test.html");

//方式3:加载手机本地的html页面

webView.loadUrl("content://com.android.htmlfileprovider/sdcard/test.html");

// 方式4: 加载 HTML 页面的一小段内容

WebView.loadData(String data, String mimeType, String encoding)

其中要注意的是加载apk包中的HTML页面的时候file之后是三个斜杠

然后WebView也可以进行网页的前进后退的操作

//是否可以后退

Webview.canGoBack()

//后退网页

Webview.goBack()

//是否可以前进

Webview.canGoForward()

//前进网页

Webview.goForward()

//以当前的index为起始点前进或者后退到历史记录中指定的steps

//如果steps为负数则为后退,正数则为前进

Webview.goBackOrForward(intsteps)

当知晓了前进后退的操作的时候那么这里就可以设置一下使用back按键的时候将当前的Activity的退出改为网页的后退

当需要进行一些自己的一些设置。其中可以创建一个webChromeClient 的子类。这个类是在一些东西影响浏览器UI界面的发生时候被调用。例如界面刷新或者一个alert的一个响应网站的标题和图标什么都会发送到这里。

// Let's display the progress in the activity title bar, like the

// browser app does.

getWindow().requestFeature(Window.FEATURE_PROGRESS);

webview.getSettings().setJavaScriptEnabled(true);

final Activity activity = this;

webview.setWebChromeClient(new WebChromeClient() {

public void onProgressChanged(WebView view, int progress) {

// Activities and WebViews measure progress with different scales.

// The progress meter will automatically disappear when we reach 100%

activity.setProgress(progress * 1000);

}

});

webview.setWebViewClient(new WebViewClient() {

public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {

Toast.makeText(activity, "Oh no! " + description, Toast.LENGTH_SHORT).show();

}

});

webview.loadUrl("https://developer.android.com/");

上面Google官网上给出的范例代码。其中可以看到首先是要getSettings().setJavaScriptEnabled(true)设置使用JavaScript。使用getSetting可以进行很多配置

//声明WebSettings子类

WebSettings webSettings = webView.getSettings();

//如果访问的页面中要与Javascript交互,则webview必须设置支持Javascript

webSettings.setJavaScriptEnabled(true);

// 若加载的 html 里有JS 在执行动画等操作,会造成资源浪费(CPU、电量)

// 在 onStop 和 onResume 里分别把 setJavaScriptEnabled() 给设置成 false 和 true 即可

//支持插件

webSettings.setPluginsEnabled(true);

//设置自适应屏幕,两者合用

webSettings.setUseWideViewPort(true); //将图片调整到适合webview的大小

webSettings.setLoadWithOverviewMode(true); // 缩放至屏幕的大小

//缩放操作

webSettings.setSupportZoom(true); //支持缩放,默认为true。是下面那个的前提。

webSettings.setBuiltInZoomControls(true); //设置内置的缩放控件。若为false,则该WebView不可缩放

webSettings.setDisplayZoomControls(false); //隐藏原生的缩放控件

//其他细节操作

webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); //关闭webview中缓存

webSettings.setAllowFileAccess(true); //设置可以访问文件

webSettings.setJavaScriptCanOpenWindowsAutomatically(true); //支持通过JS打开新窗口

webSettings.setLoadsImagesAutomatically(true); //支持自动加载图片

webSettings.setDefaultTextEncodingName("utf-8");//设置编码格式

然后分别使用了WebViewClient 和WebChromeClient的两个子类的部分方法。

那么这里我们就可以打开androidStudio中的WebViewClient的类查看到底有什么是可以用的上的。

其中在WebView中比较常用的方法

shouldOverrideUrlLoading()

作用是在于打开网页的时候不调用系统的浏览器,而是在本地的WebView中显示

使用的方法都是在webViewClient的子类中复写一下代码就可以

webView.setWebViewClient(new WebViewClient(){

@Override

public boolean shouldOverrideUrlLoading(WebView view, String url) {

view.loadUrl(url);

return true;

}

还有比较常用的就是页面加载开始和页面加载结束的调用。

分别是 onPageStarted和onPageFinished 其中的方法都可以在原来的类中找到,只要重写方法,然后加上自己所需要的操作就可以了。

相关推荐

5款Syslog集中系统日志常用工具对比推荐

一、为何要集中管理Syslog?Syslog由Linux/Unix系统及其他网络设备生成,广泛分布于整个网络。因其包含关键信息,可用于识别网络中的恶意活动,所以必须对其进行持续监控。将Sys...

跨平台、多数据库支持的开源数据库管理工具——DBeaver

简介今天给大家推荐一个开源的数据库管理工具——DBeaver。它支持多种数据库系统,包括Mysql、Oracle、PostgreSQL、SLQLite、SQLServer等。DBeaver的界面友好...

强烈推荐!数据库管理工具:Navicat Premium 16.3.2 (64位)

NavicatPremium,一款集数据迁移、数据库管理、SQL/查询编辑、智能设计、高效协作于一体的全能数据库开发工具。无论你是MySQL、MariaDB、MongoDB、SQLServer、O...

3 年 Java 程序员还玩不转 MongoDB,网友:失望

一、什么场景使用MongoDB?...

拯救MongoDB管理员的GUI工具大赏:从菜鸟到极客的生存指南

作为一名在NoSQL丛林中披荆斩棘的数据猎人,没有比GUI工具更称手的瑞士军刀了。本文将带你围观五款主流MongoDB管理神器的特性与暗坑,附赠精准到扎心的吐槽指南一、MongoDBCompass:...

mongodb/redis/neo4j 如何自己打造一个 web 数据库可视化客户端?

前言最近在做neo4j相关的同步处理,因为产线的可视化工具短暂不可用,发现写起来各种脚本非常麻烦。...

solidworks使用心得,纯干货!建议大家收藏

SolidWorks常见问题...

统一规约-关乎数字化的真正实现(规范统一性)

尽管数字化转型的浪潮如此深入人心,但是,对于OPCUA和TSN的了解却又甚少,这难免让人质疑其可实现性,因为,如果缺乏统一的语义互操作规范,以及更为具有广泛适用的网络与通信,则数字化实际上几乎难以具...

Elasticsearch节点角色配置详解(Node)

本篇文章将介绍如下内容:节点角色简介...

产前母婴用品分享 篇一:我的母婴购物清单及单品推荐

作者:DaisyH8746在张大妈上已经混迹很久了,有事没事看看“什么值得买”已渐渐成了一种生活习惯,然而却从来没有想过自己要写篇文章发布上来,直到由于我产前功课做得“太过认真”(认真到都有点过了,...

比任何人都光彩照人的假期!水润、紧致的肌肤护理程序

图片来源:谜尚愉快的假期临近了。身心振奋的休假季节。但是不能因为这种心情而失去珍贵的东西,那就是皮肤健康。炙热的阳光和强烈的紫外线是使我们皮肤老化的主犯。因此,如果怀着快乐的心情对皮肤置之不理,就会使...

Arm发布Armv9边缘AI计算平台,支持运行超10亿参数端侧AI模型

中关村在线2月27日消息,Arm正式发布Armv9边缘人工智能(AI)计算平台。据悉,该平台以全新的ArmCortex-A320CPU和领先的边缘AI加速器ArmEthos-U85NPU为核心...

柔性——面向大规模定制生产的数字化实现的基本特征

大规模定制生产模式的核心是柔性,尤其是体现在其对定制的要求方面。既然是定制,并且是大规模的定制,对于制造系统的柔性以及借助于数字化手段实现的柔性,就提出了更高的要求。面向大规模定制生产的数字化业务管控...

创建PLC内部标准——企业前进的道路

作者:FrankBurger...

标准化编程之 ----------- 西门子LPMLV30测试总结

PackML乃是由OMAC开发且被ISA所采用的自动化标准TR88.00.02,能够更为便捷地传输与检索一致的机器数据。PackML的主要宗旨在于于整个工厂车间倡导通用的“外观和感觉”,...

取消回复欢迎 发表评论: