WebView使用及原理

来源:互联网 发布:php处理上传的图片 编辑:程序博客网 时间:2024/05/23 15:43

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);
  • 调用WebView中的loadUrl()方法,设置WebView要显示的网页:

    • 网络请求:webView.loadUrl(“http://blog.csdn.net/ideal_utopia“);
    • 本地资源加载:webView.loadUrl(“file://android_asset/xx.html”);
  • 调用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;    }}

第二种、在布局文件中配置:

  • 在布局文件中声明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;        }    }}
0 0
原创粉丝点击