Android开发笔记—WebView、ProgressDialog的基础使用

来源:互联网 发布:钢结构连接计算软件 编辑:程序博客网 时间:2024/04/30 09:54

调用系统自带浏览器可以使用以下方法

//调用系统自带浏览器打开网址 Uri uri = Uri.parse("http://www.baidu.com"); Intent intent = new Intent(Intent.ACTION_VIEW, uri); startActivity(intent);

WebView加载本地资源

WebView webView = (WebView) findViewById(R.id.webView);webView.loadUrl("file:///android_asset/test.html");

WebView加载Web资源

webView.loadUrl("http://www.baidu.com");

覆盖WebView默认通过其他浏览器打开网页的行为,使得网页可以在webView中打开

webView.setWebViewClient(new WebViewClient(){    @Override    public boolean shouldOverrideUrlLoading(WebView view, String url) {        view.loadUrl(url);        return true;        //return super.shouldOverrideUrlLoading(view, url);    }    //WebViewClient帮助WebView去处理一些页面控制和请求通知});

启用支持javascript

WebSettings webSettings = webView.getSettings();webSettings.setJavaScriptEnabled(true);

优先使用缓存加载

webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);

加载过程中显示进度条对话框

private ProgressDialog dialog;webView.setWebChromeClient(new WebChromeClient(){     @Override     public void onProgressChanged(WebView view, int newProgress) {         //newProgress 1-100的整数         if(newProgress == 100){             //网页加载完毕,关闭ProgressDialog             closeDialog();         }else{             //网页正在加载,打开ProgressDialog             openDialog(newProgress);         }     }     private void closeDialog() {         if(dialog!=null && dialog.isShowing()){             dialog.dismiss();             dialog = null;         }     }     private void openDialog(int newProgress) {         if (dialog == null){             dialog = new ProgressDialog(MainActivity.this);             dialog.setTitle("正在加载中");             dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);//设置进度条样式             dialog.show();         }else{             dialog.setProgress(newProgress);         }     } });

重写onKeyDown方法改写手机物理按键返回逻辑

@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {    if (keyCode == KeyEvent.KEYCODE_BACK){        Toast.makeText(this,webView.getUrl(),Toast.LENGTH_SHORT).show();        //判断是否存在上一页面,有则后退        if(webView.canGoBack()){            webView.goBack();//返回上一页面            return true;        }else{            System.exit(0);//退出程序        }    }    return super.onKeyDown(keyCode, event);}

完整代码

package com.example.jialin.webviewdemo;import android.app.ProgressDialog;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.KeyEvent;import android.webkit.WebChromeClient;import android.webkit.WebSettings;import android.webkit.WebView;import android.webkit.WebViewClient;import android.widget.Toast;public class MainActivity extends AppCompatActivity {    private WebView webView;    private ProgressDialog dialog;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);//        //调用系统自带浏览器打开网址//        Uri uri = Uri.parse("http://2014.qq.com");//        Intent intent = new Intent(Intent.ACTION_VIEW, uri);//        startActivity(intent);        init();    }    public void init(){        webView = (WebView) findViewById(R.id.webView);        //加载本地资源。        //webView.loadUrl("file:///android_asset/test.html");        //加载Web资源        webView.loadUrl("http://2014.qq.com");        //覆盖WebView默认通过其他浏览器打开网页的行为,使得网页可以在webView中打开        webView.setWebViewClient(new WebViewClient(){            @Override            public boolean shouldOverrideUrlLoading(WebView view, String url) {                view.loadUrl(url);                return true;                //return super.shouldOverrideUrlLoading(view, url);            }            //WebViewClient帮助WebView去处理一些页面控制和请求通知        });        //启用支持javascript        WebSettings webSettings = webView.getSettings();        webSettings.setJavaScriptEnabled(true);        //优先使用缓存加载        webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);        webView.setWebChromeClient(new WebChromeClient(){            @Override            public void onProgressChanged(WebView view, int newProgress) {                //newProgress 1-100的整数                if(newProgress == 100){                    //网页加载完毕,关闭ProgressDialog                    closeDialog();                }else{                    //网页正在加载,打开ProgressDialog                    openDialog(newProgress);                }            }            private void closeDialog() {                if(dialog!=null && dialog.isShowing()){                    dialog.dismiss();                    dialog = null;                }            }            private void openDialog(int newProgress) {                if (dialog == null){                    dialog = new ProgressDialog(MainActivity.this);                    dialog.setTitle("正在加载中");                    dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);//设置进度条样式                    dialog.show();                }else{                    dialog.setProgress(newProgress);                }            }        });    }    //改写手机物理按键返回逻辑    @Override    public boolean onKeyDown(int keyCode, KeyEvent event) {        if (keyCode == KeyEvent.KEYCODE_BACK){            Toast.makeText(this,webView.getUrl(),Toast.LENGTH_SHORT).show();            //判断是否存在上一页面,有则后退            if(webView.canGoBack()){                webView.goBack();//返回上一页面                return true;            }else{                System.exit(0);//退出程序            }        }        return super.onKeyDown(keyCode, event);    }}
0 0
原创粉丝点击