版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第五章WebView本章讲解内容:WebView的基本使用WebView的常用类WebView与JS交互5.1WebView的基本使用WebView是一个基于webkit引擎、展现web页面的控件。webview在低版本和高版本采用了不同的webkit版本内核,4.4后直接使用了Chrome。WebView控件功能强大,除了具有一般View的属性和设置外,还可以对url请求、页面加载(直接使用html文件(网络上或本地assets中)作布局)、渲染Wb页面、页面交互(和js交互)进行强大的处理。5.1.1WebView的状态//销毁Webview//在关闭了Activity时,如果Webview的音乐或视频,还在播放。就必须销毁Webview//但是注意:webview调用destory时,webview仍绑定在Activity上//这是由于自定义webview构建时传入了该Activity的context对象//因此需要先从父容器中移除webview,然后再销毁webview:rootLayout.removeView(webView);webView.destroy();5.1.2WebView关于前进/后退网页//是否可以后退Webview.canGoBack()//后退网页Webview.goBack()//是否可以前进Webview.canGoForward()//前进网页Webview.goForward()//以当前的index为起始点前进或者后退到历史记录中指定的steps//如果steps为负数则为后退,正数则为前进Webview.goBackOrForward(intsteps)5.1.3Back键按钮控制网页后退问题:在不做任何处理前提下,浏览网页时点击系统的“Back”键,整个Browser会调用finish()而结束自身目标:点击返回后,是网页回退而不是推出浏览器解决方案:在当前Activity中处理并消费掉该Back事件publicbooleanonKeyDown(intkeyCode,KeyEventevent){if((keyCode==KEYCODE_BACK)&&mWebView.canGoBack()){mWebView.goBack();returntrue;}returnsuper.onKeyDown(keyCode,event);}5.1.4清楚缓存数据//清除网页访问留下的缓存//由于内核缓存是全局的因此这个方法不仅仅针对webview而是针对整个应用程序.Webview.clearCache(true);//清除当前webview访问的历史记录//只会webview访问历史记录里的所有记录除了当前访问记录Webview.clearHistory();//这个api仅仅清除自动完成填充的表单数据,并不会清除WebView存储到本地的数据Webview.clearFormData();5.2WebView的常用类5.2.1WebSetting类,主要作用是对WebView进行配置和管理//生成一个WebView组件(两种方式)//方式1:直接在在Activity中生成WebViewwebView=newWebView(this)//方法2:在Activity的layout文件里添加webview控件:WebViewwebview=(WebView)findViewById(R.id.webView1);//声明WebSettings子类WebSettingswebSettings=webView.getSettings();//如果访问的页面中要与Javascript交互,则webview必须设置支持JavascriptwebSettings.setJavaScriptEnabled(true);/webview中缓存webSettings.setAllowFileAccess(true);//设置可以访问文件webSettings.setJavaScriptCanOpenWindowsAutomatically(true);//支持通过JS打开新窗口webSettings.setLoadsImagesAutomatically(true);//支持自动加载图片webSettings.setDefaultTextEncodingName("utf-8");//设置编码格式5.2.2WebViewClient类,主要作用处理各种通知和请求时间//步骤1.定义Webview组件Webviewwebview=(WebView)findViewById(R.id.webView1);//步骤2.选择加载方式//加载一个网页:webView.loadUrl("/");//步骤3.复写shouldOverrideUrlLoading()方法,webView.setWebViewClient(newWebViewClient(){@OverridepublicbooleanshouldOverrideUrlLoading(WebViewview,Stringurl){//使得打开网页时不调用系统浏览器,而是在本WebView中显示view.loadUrl(url);returntrue;}代码示例:MainActivity.javapublicclassMainActivityextendsAppCompatActivity{
WebViewmWebview;
WebSettingsmWebSettings;
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mWebview=(WebView)findViewById(R.id.webView1);
mWebSettings=mWebview.getSettings();
//访问的页面需要与JavaScript交互,则webview必须设置支持javascript
mWebSettings.setJavaScriptEnabled(true);
//设置编码格式
mWebSettings.setDefaultTextEncodingName("utf-8");//这是编码格式
mWebview.loadUrl("/cinema/movie/1210778?$from=canary#");
//设置不用系统浏览器打开,直接显示在当前Webview
mWebview.setWebViewClient(newWebViewClient(){
@Override
publicbooleanshouldOverrideUrlLoading(WebViewview,Stringurl){
view.loadUrl(url);
returntrue;
}
});
}
//点击返回上一页面而不是退出浏览器
@Override
publicbooleanonKeyDown(intkeyCode,KeyEventevent){
if(keyCode==KeyEvent.KEYCODE_BACK&&mWebview.canGoBack()){
mWebview.goBack();
returntrue;
}
returnsuper.onKeyDown(keyCode,event);
}
//销毁Webview
@Override
protectedvoidonDestroy(){
if(mWebview!=null){
mWebview.loadDataWithBaseURL(null,"","text/html","utf-8",null);
mWebview.clearHistory();
((ViewGroup)mWebview.getParent()).removeView(mWebview);
mWebview.destroy();
mWebview=null;
}
super.onDestroy();
}
}activity_main.xml<?xmlversion="1.0"encoding="utf-8"?>
<RelativeLayoutxmlns:android="/apk/res/android"
xmlns:tools="/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<WebView
android:id="@+id/webView1"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</RelativeLayout>AndroidMainfest.xml添加网络权限<uses-permissionandroid:name="android.permission.INTERNET"/>*注从Android9.0(API级别28)开始,默认情况下禁用明文支持。因此http的url均无法在webview中加载添加"android:usesCleartextT
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 苏教版五年级数学下册全册课件教学计划
- 初中数学人教版学习方案
- 澳大利亚的地质奇观与地貌
- 苏教版六年级上册教案编写要点分享
- 新版四年级苏教问题解答技巧提升秘籍
- 初三数学模拟中考北师大版
- 苏教版小升初数学全真冲刺试卷及答案二
- 人教版一年级语文资料剖析
- 苏教版语文必修三考点梳理
- 一年级数学教案设计研究
- 2024国家能源集团春季校园招聘高频考题难、易错点模拟试题(共500题)附带答案详解
- CNAS实验室内审检查表
- 铸件质量控制与检测方法
- 统编2024版七年级上册道德与法治第一单元 少年有梦 单元整体教学设计
- 2024版过桥资金合同模板
- 争做文明礼仪小天使(课件) 小学生主题班会
- 精神病人监护人委托书
- 2024年国家一级注册建筑师资格考试题库含答案(典型题)
- 川教版(2019)小学信息技术四年级上册教学计划
- 新能源汽车产业发展可行性评估报告
- 对外投资合作国别(地区)指南 -智利-20230714-00413
评论
0/150
提交评论