WebView

来源:互联网 发布:联想数据恢复中心 编辑:程序博客网 时间:2024/06/05 08:06

第二种方法的步骤:
1、在布局文件中声明WebView
2、在Activity中实例化WebView
3、调用WebView的loadUrl( )方法,设置WevView要显示的网页
4、为了让WebView能够响应超链接功能,调用setWebViewClient( )方法,设置 WebView视图
5、用WebView点链接看了很多页以后为了让WebView支持回退功能,需要覆盖覆盖Activity类的onKeyDown()方法,如果不做任何处理,点击系统回退剪键,整个浏览器会调用finish()而结束自身,而不是回退到上一页面
6、需要在AndroidManifest.xml文件中添加权限,否则出现Web page not available错误。

//webview加载页面优先使用缓存加载
settings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);

public class MainActivity extends AppCompatActivity {    private WebView webView;    private ProgressDialog progressDialog;    private String url="http://www.baidu.com";    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        webView= (WebView) findViewById(R.id.webview);        /*加载本地资源        webView.loadUrl("file:///android_asset/example.html");*/        //加载Web资源        //启用J支持avaScript        WebSettings settings=webView.getSettings();        settings.setJavaScriptEnabled(true);        webView.loadUrl(url);        webView.setWebViewClient(new WebViewClient(){            //WebView默认通过第三方或者是系统浏览器打开网页的行为,使得网页可以在WebView中打开            public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {                //返回值是TRUE的时候控制网页在WebView中打开,如果为FALSE则调用第三方浏览器或者系统浏览器去打开                view.loadUrl("http://www.baidu.com");                return true;            }            //WebViewClient帮助WebView去处理一些页面控制和请求通知        });       // webView.loadUrl(url);        //webview加载页面优先使用缓存加载        settings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);        webView.setWebChromeClient(new WebChromeClient(){            @Override            public void onProgressChanged(WebView view, int newProgress) {                //newProgress1-100的整数                if (newProgress==100){                    //网页加载完毕                    closeDialog();                }                else{                    //网页正在加载                    openDialog(newProgress);                }            }        });    }    private void closeDialog() {        if(progressDialog!=null&&progressDialog.isShowing()){            progressDialog.dismiss();            progressDialog=null;        }    }    private void openDialog(int newProgress) {        if (progressDialog==null){            progressDialog=new ProgressDialog(MainActivity.this);            progressDialog.setTitle("正在加载");            progressDialog.setProgressStyle(progressDialog.STYLE_HORIZONTAL);            progressDialog.setProgress(newProgress);            progressDialog.show();        }        else {            progressDialog.setProgress(newProgress);        }    }    //改写物理按钮--返回的逻辑    @Override    public boolean onKeyDown(int keyCode, KeyEvent event) {        if (keyCode==KeyEvent.KEYCODE_BACK){            if (webView.canGoBack()){                webView.goBack();//返回上一页面                return true;            }            else{                System.exit(0);//退出程序            }        }        return super.onKeyDown(keyCode, event);    }}