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);
  • 调用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;
    }
}
第二种、在布局文件中配置:
  • 在布局文件中声明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;
        }
    }
}
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值