• Android网络通信(4):WebKit


    参考链接:http://www.cnblogs.com/qingblog/archive/2012/06/15/2550735.html

    接上一篇文章:Android网络通信(3):Socket通信

    WebKit应用
    Android 浏览器的内核是Webkit引擎,WebKit的前身是KDE小组的KHTML.
    WebKit 是一个开源浏览器网页排版引擎。与之对应的引擎有Gecko和Trident等。
    WebKit 由3个模块组成:
    WebKit :整个项目的名称
    JavaScriptCore :JavaScrip解释器
    WebCore :整个项目的核心,用来实现Render引擎,解析Web页面,生成一个DOM树和一个Render树。
    WebKit的解析过程:
    1、CURL获得网站的stream。
    2、解析划分字符串。
    3、通过DOM Builer按合法的HTML规范生成DOM树。
    4、如果有Javascript,JSEngine就通过ECMA-262标准完善DOM树。
    5、把DOM传给LayoutEngine进行布局,如果有CSS样式,就通过CSSParser解析。
    6、最后Rendering渲染出来。
    WebView
    WebView控件是WebKit类中专门用来浏览网页的控件。
    其使用需要在XML文件中定义一个WebView控件:
    <WebView
    android:id="@+id/WebView01"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_weight="1"
    />
    然后需要在程序代码中转载这个控件 ,并设置其颜色、字体、要访问的网址(也可在XML文件中设置)。
    通过loadUrl方法设置当前WebView需要访问的网址代码如下:
    mWebView= (WebView)findViewById(R.id.WebView01);
    mWebView.loadUrl("http://www.google.com");

    在Android中可以通过WebSettings来设置WebKit的一些属性、状态等。在创建WebView时,系统有一个默认的设置,可以通过WebView.getSettings来得到如下:
    WebSettings webSettings = mWebView.getSetting();//得到mWebView的WebSettings对象
    WebSettings和WebView 都在同一生命周期中存在,当WebView被销毁后,如果再使用WebSettings则会抛出IllegalStateException异常。
    下为时设置一些常用属性、状态的方法。将下面的set改为get即可得到WebView的一些属性和状态。
    setAllowFileAccess 启动或禁止WebView访问文件数据
    setBlockNetworkImage 是否显示图像
    setBuiltInZoomControls 设置是否支持缩放
    setCacheMode 设置缓冲模式
    setDefaultFontSize 设置默认的字体大小
    setDefaultTextEncodingName 设置在解码时使用的默认编码
    setFixedFontFamily 设置固定使用的字体
    setJavaScriptEnabled 设置是否支持JavaScript
    setLayoutAlgorithm 设置布局方式
    setLightTouchEnabled 设置用鼠标激活被选项
    setSupportZoom 设置是否支持变焦
    WebViewClient
    在程序中可以用WebViewClient来自定义网页浏览程序。此类就是专门辅助WebView处理各种通知,请求等事件的类。可以通过WebView的setWebViewClient方法来创建一个WebViewClient对象。
    WebViewClient常用方法:
    doUpdateVisitedHistory 更新历史记录
    onFormResubmission 应用程序重新请求网页数据
    onLoadResource 加载指定地址提供的资源
    onPageFinished 网页加载完毕
    onPageStarted 网页开始加载
    onReceivedError 报告错误信息
    onScaleChanged WebView发生改变
    shouldOverrideUrlLoading 控制新的连接在当前WebView中打开
    我们可以覆盖这些方法来辅助WebView浏览网页.如下:我们设置覆盖shouldOverrideUrlLoading方法。
    public boolean shouldOverrideUrlLoading(WebView view ,String url){
    view.loadUrl(url);//设置访问的网址
    ruturn true;
    }
    WebChromeClient
    在Android中通过WebChromeClient专门来辅助WebView处理Javascript的对话框、网站图标、网站Title、加载进度等。
    WebChromeClient中常用方法
    onCloseWindow 关闭WebView
    onCreateWindow 创建WebView
    onJsAlert 处理Javascript中的Alert对话框
    onJsConfirm 处理Javascript中的Confirm对话框
    onJsPrompt 处理Javascript中的Prompt对话框
    onProgressChanged 加载进度条改变
    onReceivedIcon 网页图标更改
    onReceivedTitle 网页Title更改
    onRequestFocus WebView显示焦点
    下面来实现onReceiveTitle方法,用于更改应用程序的Title 代码如下:
    public void onReceivedTitle(WebView view,String title){
    Activity01.this.setTitle(title);
    super.onReceivedTitle(view,title);
    }

    WebView与Javascript

    WebView不但可以运行一段HTML代码,而且还有一个最重要的特点,就是WebView可以通Javascript互相调用。有了它我们就可以用HTML和Javascript来编写Android应用。

    下面来制作一个浏览器,界面使用EditText来输入网址,用Button来确认连接,用WebView来显示网页内容。

    代码下载链接:http://www.apkbus.com/android-116905-1-1.html

    喜欢开源,乐意分享的大神们,欢迎加入QQ群:176507146,你指的拥有哦!

    作者:快乐出发0220 ;Android群:151319601 ; Linux群:96394158 ;转载请注明出处 http://klcf0220.cnblogs.com/ !!!
  • 相关阅读:
    《机器学习》第二次作业——第四章学习记录和心得
    机器学习一到三章笔记
    [ML] 第四章学习总结
    [CV] Mnist手写数字分类
    ModelArts (华为GPU/CPU计算云平台)体验
    [DataSturcture] 红黑树求逆序对
    [CV] 边缘提取和角点判断
    [CV] 灰度共生矩阵
    [DataStructure] AC 自动机(Aho–Corasick Automata)
    [GIT] 如何删除git上保存的文件(包含历史文件)
  • 原文地址:https://www.cnblogs.com/klcf0220/p/3085558.html
Copyright © 2020-2023  润新知