当前位置:   article > 正文

WebView使用及原理_webview原理

webview原理

WebView在是一个特殊的View, 它能用来显示网页,这个类可以被用来在app中仅仅显示一张在线的网页,还可以用来开发浏览器。WebView内部实现是采用渲染引擎来展示view的内容,提供网页前进后退,网页放大,缩小,搜索,前端开发者可以使用web inspector(Android 4.4系统支持,4.4一下可以采用http://developer.android.com/guide/webapps/debugging.html)调试HTML,CSS,JavaScript等等功能。在Android 4.3系统及其一下WebView内部采用Webkit渲染引擎,在Android 4.4采用chromium 渲染引擎来渲染View的内容。

把WebView视为一个浏览器,它使用了Webkit渲染引擎加载显示网页,WebView有两种实现方法:

第一种,实例化代码:
  • 在要Activity中实例化WebView组件:

    WebView webView = new WebView(this);
    • 1
  • 调用WebView中的loadUrl()方法,设置WebView要显示的网页:

  • 调用Activity的setContentView()方法显示网页视图

  • 使WebView多次打开请求界面时,具有back功能,需覆盖Activity的onKeyDown方法,如果不做任何处理,那么一使用手机back功能,那么浏览器则会调用finish,从而结束自身,并不会进行界面的回退!
  • 需要在配置文件添加网络请求权限,否则会“Web page not available”

eg:

public calss MainActivity extends Activity
{
    private WebView webView;

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        //实例化WebView对象
        webView = new WebView(this);
        //设置WebView属性,能够执行JavaScript脚本
        webView.getSettings.setJavaScriptEnaled(true);
        //加载需要显示的网页
        webView.loadUrl("http://blog.csdn.net/ideal_utopia");
        //设置Web视图
        setContentView(webView);
    }

    //设置回退
    //覆盖Activity的onKeyDown(int keyCode,KeyEvent event)方法
    @Override
    public boolean onKeyDown(int keyCode,KeyEvent event)
    {
        if((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack())
        {
            webView.goBack();//goBack()表示返回WebView的上一个界面
            return true;
        }
        return false;
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
第二种、在布局文件中配置:
  • 在布局文件中声明WebView
  • 在Activity中实例化WebView
  • 调用WebView的loadUrl()方法,设置WebView要显示的网页
  • 使WebView能够响应超链接功能,调用setWebViewClient()方法,设置WebView视图
  • 覆盖Activity的onKeyDown方法
  • 设置网络请求权限

eg:

public calss MainActivity extends Activity
{
    private WebView webView;

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        webView = (WebView)findViewById(R.id.webView);
        //设置WebView属性,能够执行JavaScript脚本
        webView.getSettings.setJavaScriptEnaled(true);
        //加载需要显示的网页
        webView.loadUrl("http://blog.csdn.net/ideal_utopia");
        //设置Web视图
        webView.setContentView(new WebViewClient());
    }

    //设置回退
    //覆盖Activity的onKeyDown(int keyCode,KeyEvent event)方法
    @Override
    public boolean onKeyDown(int keyCode,KeyEvent event)
    {
        if((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack())
        {
            webView.goBack();//goBack()表示返回WebView的上一个界面
            return true;
        }
        return false;
    }

    //web视图
    private classHelloWebViewClient extends WebViewClient
    {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url)
        {
            view.loadUrl(url);
            return true;
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号