博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
手机 简易浏览器 WebView的基本使用 返回 缓存 进度条
阅读量:6257 次
发布时间:2019-06-22

本文共 2605 字,大约阅读时间需要 8 分钟。

 

public class MainActivity extends AppCompatActivity {    private WebView webView;    private String url = "http://2014.qq.com/";    private ProgressDialog dialog;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        init();    }    private void init() {        webView = (WebView)findViewById(R.id.webview);        //加载网页地址        webView.loadUrl(url);        //重写shouldOverrideUrlLoading方法使网页可以在应用中显示 而不是系统浏览器        webView.setWebViewClient(new WebViewClient() {            @Override            public boolean shouldOverrideUrlLoading(WebView view, String url) {//                return super.shouldOverrideUrlLoading(view, url);                view.loadUrl(url);                return true;            }        });        //启用支持JavaScript        WebSettings settings = webView.getSettings();        settings.setJavaScriptEnabled(true);        //WebView加载页面优先使用缓存        settings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);        webView.setWebChromeClient(new WebChromeClient() {            @Override            public void onProgressChanged(WebView view, int newProgress) {                if (newProgress == 100) {                    //加载完毕 关闭ProgressDialog                    closeDialog();                } else {                    //正在加载 打开ProgressDialog                    openDialog(newProgress);                }            }        });    }    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);        }    }    private void closeDialog() {        if(dialog != null && dialog.isShowing()){            dialog.dismiss();       //取消显示            dialog = null;        }    }    //改写手机物理按键 返回逻辑    @Override    public boolean onKeyDown(int keyCode, KeyEvent event) {        if(keyCode ==  KeyEvent.KEYCODE_BACK){            if(webView.canGoBack()) {                webView.goBack();   //返回上一页面                return true;            }            else {                System.exit(0);     //推出程序n b            }        }        return super.onKeyDown(keyCode, event);    }

  

转载于:https://www.cnblogs.com/zmaibbs7/p/4850371.html

你可能感兴趣的文章
leetcode 221: Maximal Square
查看>>
Oracle更新时间字段
查看>>
Android 四大组件学习之ContentProvider二
查看>>
使用jcaptcha插件生成验证码
查看>>
centos6.5 (linux) 禁用模块 IPV6模块的方法
查看>>
用webpack2.0构建vue2.0超详细精简版
查看>>
从分类,排序,top-k多个方面对推荐算法稳定性的评价
查看>>
006_ssl监测及评分
查看>>
ES6中的模块
查看>>
ubuntu16.04 登录密码破解方法
查看>>
Retrofit2.0+OkHttp打印Request URL(请求地址参数)
查看>>
19-hadoop-fof好友推荐
查看>>
自己定义View学习之12/7(进度条之混合模式)
查看>>
Android零基础入门第5节:善用ADT Bundle,轻松邂逅女神
查看>>
momentum公式
查看>>
Git合并最近的commit
查看>>
面向对象高级——Object类、包装类以及匿名内部类
查看>>
(转)Mybatis insert后返回主键给实体对象(Mysql数据库)
查看>>
SFTP环境搭建及客户代码调用公共方法封装
查看>>
功能的权衡——推荐功能做不做?
查看>>