安卓开发4-第五章-WebView_第1页
安卓开发4-第五章-WebView_第2页
安卓开发4-第五章-WebView_第3页
安卓开发4-第五章-WebView_第4页
安卓开发4-第五章-WebView_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第五章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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论