Android 内置浏览器之webview

目录:
        1.webview概述    
        2.webview常用方法
        3.webview基本使用
                3.1 真的基本使用(还有假的吗?白眼)
                3.2 cookie处理
                3.3 缓存处理
                3.4 页面导航处理
                3.5 缩放与窗口管理
        4.webview相关类介绍
                4.1 相关类思维导图
                4.2 webSettings
                4.3 WebViewClient
                4.4 WebChromeClient
        5.webview与javascript
        6.webview加载URL或本地网页

1.webview概述  
        webview是SDK中封装的一款基于webkit内核(后面开始基于Chromium内核)的浏览器组件,通过它我们可以实现网页的展示,实现某些实时性强的内容的更新,现在流行的混合型移动端其实最大一点好处就是可以实现热更新,webview其实也有那么一点意味在里面。
 
 2.webview常用方法
   
   
   
  1. //后退到上一页面
  2. webView.goBack();
  3. //前进到下一页面
  4. webView.goForward();
  5. //前进或者后退指定的页面数
  6. webView.goBackOrForward(2);
  7. //滑动到页面顶端
  8. webView.pageUp(true);
  9. //滑动到页面底端
  10. webView.pageDown(true);
  11. //以当前的页面为基准,判断是否webview的历史记录可以实现前进和后退指定的页数,正数向前,负数向后
  12. webView.canGoBackOrForward(-2);
  13. //判断webview的历史记录是否还可以实现回退
  14. webView.canGoBack();
  15. //判断webview的历史记录里面还可以实现向前
  16. webView.canGoForward();
  17. //清空网页的缓存数据,true表示全清空,false表示只清空内存资源缓存,不清空磁盘里面的
  18. webView.clearCache(true);
  19. //清除访问历史记录
  20. webView.clearHistory();
  21. //清空当前表单域中的表单数据
  22. webView.clearFormData();
  23. //加载指定网页
  24. webView.loadUrl("https://www.baidu.com");
  25. //获取当前页面的URL
  26. webView.getUrl();
  27. //重新加载当前的URL
  28. webView.reload();
 3.webview基本使用
3.1 真的基本使用(还有假的吗?白眼)
      我们先实现一个webview的简单使用,不添加任何添加剂,纯天然的webview~~~
(1)布局文件activity_main.xml
   
   
   
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <RelativeLayout
  3. xmlns:android="http://schemas.android.com/apk/res/android"
  4. xmlns:tools="http://schemas.android.com/tools"
  5. android:layout_width="match_parent"
  6. android:layout_height="match_parent"
  7. android:paddingLeft="@dimen/activity_horizontal_margin"
  8. android:paddingRight="@dimen/activity_horizontal_margin"
  9. android:paddingTop="@dimen/activity_vertical_margin"
  10. android:paddingBottom="@dimen/activity_vertical_margin"
  11. tools:context="com.example.webview.MainActivity">
  12. <WebView
  13. android:id="@+id/webView"
  14. android:layout_width="match_parent"
  15. android:layout_height="match_parent">
  16. </WebView>
  17. </RelativeLayout>
(2)Java文件实现绑定并加载一个简单的网页
   
   
   
  1. package com.example.webview;
  2. import android.os.Bundle;
  3. import android.support.v7.app.AppCompatActivity;
  4. import android.webkit.WebView;
  5. public class MainActivity extends AppCompatActivity {
  6. private WebView webView;
  7. @Override
  8. protected void onCreate(Bundle savedInstanceState) {
  9. super.onCreate(savedInstanceState);
  10. setContentView(R.layout.activity_main);
  11. webView= (WebView) findViewById(R.id.webView);
  12. //加载指定网页
  13. webView.loadUrl("https://www.baidu.com");
  14. }
  15. }
(3)别忘了manifest.xml添加网络访问权限
   
   
   
  1. <!--添加网络访问权限-->
  2. <uses-permission android:name="android.permission.INTERNET"/>
ok,纯天然webview制作完成,看看效果


妈蛋,说好的内置呢,跟说好的不一样啊,为毛是调用系统的浏览器?好吧,看来的继续研究研究。
3.2 cookie处理
   (1)cookie概述
               在webview中设置cookie的主要作用是方便我们的native部分与我们的H5部分实现某些信息的同步,比如某个需要登录的应用,当你在native部分登录
但是某些操作需要在H5部分进行,这时候cookie同步就可以派上用场了。

    (2)cookie同步的实现
        (2.1)native部分从服务端获取发送给H5端,然后H5端通过ajax(异步JS和xml)接收,这里设计ajax交互我也不是很懂就不多做讲解

        (2.2)将本地的cookie数据直接同步到webview中
    webview的cookie保存在data/data/包名/databases/webviewCookiesChromium.db(我的Android模拟器版本是4.3的,之前的版本应该会有不一样)下面
当webview需要加载URL的时候就将这个数据库保存的对应的cookie同步上去,再与服务器交互的。

        (2.3)cookie同步类CookieManager/CookieSyncManager
   
   
   
  1. URL url=null;
  2. URLConnection conn= null;
  3. String cookie=null;
  4. try {
  5. url=new URL("http://www.baidu.com");
  6. //定义访问URLConnection请求
  7. conn = url.openConnection();
  8. //URLConnection获取响应头中的cookie信息
  9. cookie = conn.getHeaderField("Set-Cookie");
  10. } catch (Exception e) {
  11. e.printStackTrace();
  12. }
  13. //httpClient获取cookie
  14. // List Cookies = httpClient.getCookieStore().getCookies();
  15. //判斷API版本是否小于21,小于21版本的需要CookieSyncManager来进行同步
  16. if (Build.VERSION.SDK_INT<Build.VERSION_CODES.LOLLIPOP){
  17. CookieSyncManager syncManager=CookieSyncManager.createInstance(this);
  18.  //更新cookie操作
  19.            //啓動同步,在更新cookie后同步时调用
  20. syncManager.sync();
  21. }
  22. //獲取有一个cookieManager实例
  23. CookieManager cookieManager = CookieManager.getInstance();
  24. //同步cookie setCookie(String url, String value)
  25. cookieManager.setCookie("http://www.baidu.com",cookie);
3.3 缓存处理
    (1)缓存的应用概述
            缓存的应用场景主要在一些需要频繁更新的的内容类APP,例如:资讯类,新闻类,阅读类,大多这类APP都有在没网的情况下阅读的需求
而缓存的应用恰好就在这里,它可以实现在有网的时候提前缓存你的网页内容,当你在没网的情况下,打开时它通过加载缓存中的内容展示给你,从
而实现离线缓存。

    (2)缓存分类
            

    (3)缓存处理的方式
   
   
   
  1. LOAD_CACHE_ONLY//不使用网络只读取本地缓存数据
  2. LOAD_DEFAULT//根据cache-control决定是否从网络获取
  3. LOAD_CACHE_NORMAL//API 17以后弃用
  4. LOAD_NO_CACHE//从网络获取
  5. LOAD_CACHE_ELSE_NETWORK//如果有本地缓存则从本地获取,如果没有则从网络获取

    (4)缓存与删除缓存案例
--1.MainActivity.java
   
   
   
  1. package com.example.webview;
  2. import android.os.Bundle;
  3. import android.support.v7.app.AppCompatActivity;
  4. import android.view.View;
  5. import android.webkit.WebSettings;
  6. import android.webkit.WebView;
  7. import android.webkit.WebViewClient;
  8. import android.widget.Button;
  9. public class MainActivity extends AppCompatActivity {
  10. private WebView webView;
  11. private Button clearCacheBt;
  12. private static final String url="http://36kr.com/";
  13. @Override
  14. protected void onCreate(Bundle savedInstanceState) {
  15. super.onCreate
  • 2
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值