zoukankan      html  css  js  c++  java
  • Android成长日记-WebView使用

    在App中有时候会看到一些页面是以网页的形式展示,其原理就是运用了WebView,下面予以讲述WebView

    1. 使用Intent调用系统浏览器或者第三方浏览器打开网页

    调用系统浏览器打开页面

    Uri uri=Uri.parse(url); //url为网页的地址

    Intent intent=new Intent(Intent.ACTION_VIEW,uri);

    startActivity(intent);

    2. 使用WebView打开页面

    Step one:在layout文件夹中新建webView的控件

    Step two:在使用WebView的时候需要首先覆盖系统浏览器或者第三方浏览器打开网页

    //webView加载web资源

    webView.loadUrl (url);

    /*

    * 覆盖webView默认通过第三方或者系统浏览器打开网页的行为,使得网页可以在webView中打开

    */

    webView.setWebViewClient(new WebViewClient(){

    //webViewClient帮助webView去处理一些控制和请求通知

    @Override

    public boolean shouldOverrideUrlLoading(WebView view, String url) {

    //返回值为true的时候控制网页在webView中打开,false则用系统浏览器或第三方浏览器打开

    view.loadUrl(url);

    return true;

    }

    });

    Step Three:是否启用JavaScript[s1]

    //启用JavaScript

    WebSettings settings=webView.getSettings();

    settings.setJavaScriptEnabled(true);

    Step Four:通过物理按键的返回键予以返回上一页面

    //改变物理按键--返回的逻辑

    @Override

    public boolean onKeyDown(int keyCode, KeyEvent event) {

    if(keyCode==KeyEvent.KEYCODE_BACK)

    {

    webView.goBack();

    return true;

    }

    else

    {

    System.exit(0);//退出程序

    return false;

    }

    Step Five:为了增加页面的交互性,可以加入进度条的显示

    webView.setWebChromeClient(new WebChromeClient(){

    @Override

    public void onProgressChanged(WebView view, int newProgress[s2] ) {

    if(newProgress==100)

    {

    //网页加载完毕,关闭progressDialog

    closeDialog();

    }

    else

    {

    //网页正在加载,打开progressDialog

    openDialog(newProgress);

    }

    }

    private void closeDialog() {

    if(dialog!=null&&dialog.isShowing())

    {

    dialog.dismiss();//消失dialog对话框

    dialog=null;

    }

    }

    private void openDialog(int newProgress) {

    if(dialog==null)

    {

    dialog=new ProgressDialog(MainActivity.this);

    dialog.setTitle("正在加载");

    dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);

    dialog.setProgress(newProgress);//显示进度

    dialog.show();

    }

    else

    {

    dialog.setProgress(newProgress);

    }

    }

    });

    }


    [s1]为了提高页面的运行速度,可以优先使用缓存加载页面

    //webView加载页面优先使用缓存加载

    settings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);

    [s2]newProgress:显示网页的加载进度,<int>类型

  • 相关阅读:
    行盒(line box)垂直方向的属性详解:从font-size、line-height到vertical-align
    CSS绝对定位的原点:是在border上、padding上还是在content上?
    从知乎首页用户操作入口学习到的CSS技巧
    重置表单中的文件上传控件(file input)的方法
    ASCII, Unicode, UTF-8, 8进制, 16进制等各种编码学习理解笔记
    Yarn的Linking dependencies特别慢的优化方法
    MongoDB学习记录(四)
    MongoDB学习记录(三)
    MongoDB学习记录(二)
    AdBlock——拦截网页广告
  • 原文地址:https://www.cnblogs.com/boy1025/p/4301991.html
Copyright © 2011-2022 走看看