Android WebView的基本用法
来源:互联网 发布:种植牙 植骨 知乎 编辑:程序博客网 时间:2024/05/20 04:28
Android应用访问网页时,可以使用隐式Intent,携带Intent.ACTION_VIEW及Uri信息,
拉起系统的浏览器,从而进行网络访问和内容加载;
除了利用系统浏览器外,应用也可以直接使用WebView进行类似的工作。
本篇博客,主要记录一下Android WebView的基本用法。
1、布局文件
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <!--定义一个ProgressBar指示网页的载入情况--> <ProgressBar android:id="@+id/fragment_photo_page_progress_bar" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:visibility="gone" style="?android:attr/progressBarStyleHorizontal" android:background="?attr/colorPrimary"/> <!--与普通的View一样,直接定义WebView --> <WebView android:id="@+id/fragment_photo_page_web_view" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_alignParentBottom="true" android:layout_below="@id/fragment_photo_page_progress_bar"> </WebView></RelativeLayout>
2、基本接口的使用
定义好WebView的布局后,需要对WebView进行一些设置,
然后就可以利用WebView加载Uri对应的信息。
下面的代码将使用WebView相关的一些基本的接口:
............. @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.fragment_photo_page_webview, container, false); mProgressBar = (ProgressBar) v.findViewById(R.id.fragment_photo_page_progress_bar); mProgressBar.setMax(100); //得到WebView mWebView = (WebView) v.findViewById(R.id.fragment_photo_page_web_view); //WebView调用getSettings接口,将获得WebSettings对象 //WebSettings对象可用于修改WebView的一些配置 //这里启用JavaScript,并不是所有网页均需要启动JavaScript mWebView.getSettings().setJavaScriptEnabled(true); //设置WebChromeClient //WebChromeClient是一个事件接口,用于响应那些改变浏览器中装饰元素的事件 //包括JavaScript警告信息、网页图标、状态条加载、网页标题刷新等 mWebView.setWebChromeClient(new WebChromeClient() { //在这里我们重写onProgressChanged,刷新ProgressBar public void onProgressChanged(WebView webView, int newProgress) { if (newProgress == 100) { mProgressBar.setVisibility(View.GONE); } else { mProgressBar.setVisibility(View.VISIBLE); mProgressBar.setProgress(newProgress); } } //重写onReceivedTitle,刷新标题栏 public void onReceivedTitle(WebView webView, String title) { AppCompatActivity activity = (AppCompatActivity) getActivity(); if (activity != null && activity.getSupportActionBar() != null) { activity.getSupportActionBar().setSubtitle(title); } } }); //设置WebViewClient //WebViewClient也是一个事件接口,可以实现WebViewClient的各种回调接口来响应各种渲染事件 mWebView.setWebViewClient(new WebViewClient() { //这里覆盖了shouldOverrideUrlLoading接口 //当有新的URL加载到WebView时,该方法会决定对URL的处理行为 //例如,WebView中加载了一个新的链接时, //如果该方法返回false,那么用户点击链接后,将由WebView来加载该链接对应的信息 //如果该方法返回true,那么用户点击链接后,WebView就不会加载该链接,程序员必须自己定义处理行为 public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { return false; } }); //设置完WebView后,才能用WebView加载网络信息 mWebView.loadUrl(mUri.toString()); return v; }
3、处理旋转问题
当使用WebView时,如果设备发生旋转,那么WebView将重新加载网络数据。
因为WebView包含的数据太多,无法在onSaveInstanceState方法中保存;
同时,WebView是视图层的一部分,并不能通过保存Fragment来保存该View。
此时,可以如此配置WebView所在Fragment绑定的Activity:
.............<activity android:name=".activity.PhotoPageActivity" android:configChanges="keyboardHidden|orientation|screenSize"/>.............
android:configChanges属性表明,如果因键盘开或关、屏幕方向改变、屏幕大小改变而发生设备配置更改,
那么activity应自己处理配置更改。
当配置该属性后,旋转屏幕,WebView不会重新加载数据。
不过在一般情况下,不能依赖于android:configChanges属性,
因为使用该属性后,资源修饰符无法自动工作了,同时进程因为内存低被kill后,
UI状态还是会被丢弃掉,因此很多时候还是需要依赖于onSaveInstanceState方法。
4、WebView使用后退键浏览历史网页
当在WebView中点击链接访问网页时,之前的历史信息将被保存。
此时,可以实现后退键访问历史网页的功能。
示例代码如下,我们重写WebView所在Fragment绑定的Activity的onBackPressed方法:
........ @Override public void onBackPressed() { WebView webView = ((PhotoPageFragment)mFragment).getWebView(); //canGoBack判断是否有历史信息 if (webView.canGoBack()) { //如果有的话,就利用goBack回到前一个历史网页 webView.goBack(); } else { super.onBackPressed(); } } .......
- Android WebView的基本用法
- Android---WebView基本用法
- Android WebView 基本用法
- 【Android基础知识】WebView基本用法
- Android---webview的用法
- Android webview的基本使用方法
- Android WebView的基本使用
- Android WebView 的基本使用
- webView的一些基本方法和用法
- 关于Android webView的用法
- android 中WebView的用法
- Android中WebView的用法
- android中WebView的用法
- WebView基本用法
- WebView基本用法
- android WebView, WebChromeClient和WebViewClient加载网页基本用法
- android WebView, WebChromeClient跟WebViewClient加载网页基本用法
- android WebView, WebChromeClient和WebViewClient加载网页基本用法
- Linux软连接和硬链接
- 初学ios之设置启动页面
- 尚观嵌入式c语言编程进阶笔记——1.递归函数
- DisplayMetrics
- ElasticSearch 各模块介绍及参数配置详解
- Android WebView的基本用法
- elasticsearch5.2.1 环境搭建
- css元素背景图片自适应屏幕大小
- rabbitMQ说明文档地址
- Git 常用命令大全
- 最长公共子序列-python
- 数据库系统分层优化
- 串口通信读写
- Unity入门笔记-常用方法记录