您的位置:首页 > 移动开发

[android进阶]webview控件的使用

2015-04-29 19:35 429 查看
给学姐做的一个例子,测试学姐写的移动端HTML页面,这里简单记录一下,方便以后自己查看。

效果图



这里网址换成sina.com。

WebView

Webview是一个用来显示网页的控件,可以加载网络的资源,也可以加载本地资源。

直接上代码,注释也比较详细,应该能看得懂。

[code]public class MainActivity extends Activity {

    //定义webview
    private WebView mWebView;
    //定义加载的url资源
    private String url="http://sina.cn/?from=wap";
    //定义加载框
    private ProgressDialog dialog;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mWebView=(WebView) findViewById(R.id.webview);
        //获取焦点,防止页面中有输入框
        mWebView.requestFocus();
        // 覆盖WebView默认通过第三方或者是系统浏览器打开网页的行为,使得网页可以在WebVIew中打开
        mWebView.setWebViewClient(new WebViewClient(){

            //返回值是true的时候控制网页在WebView中去打开,如果为false调用系统浏览器或第三方浏览器去打开
            public boolean shouldOverrideUrlLoading(WebView view, String url) {     
                view.loadUrl(url);
                return true;
            }

        });

        WebSettings settings = mWebView.getSettings();
        //启用支持JavaScript
        settings.setJavaScriptEnabled(true);
        //WebView加载页面优先使用缓存加载
        settings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
        // WebView加载web资源,加载本地资源"file:///……"
        mWebView.loadUrl(url);

        mWebView.setWebChromeClient(new WebChromeClient(){
            @Override
            public void onProgressChanged(WebView view, int newProgress) {
                if(newProgress==100){
                    //网页加载完毕,关闭ProgressDialog
                    closeDialog();
                }else{
                    //网页正在加载,打开ProgressDialog
                    openDialog(newProgress);
                }
            }
            //打开ProgressDialog
            private void openDialog(int newProgress) {
                if(dialog==null){
                    dialog=new ProgressDialog(MainActivity.this);
                    dialog.setTitle("正在加载!");
                    dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
                    dialog.setProgress(newProgress);
                    dialog.show();
                }else{
                    dialog.setProgress(newProgress);
                }

            }
            //关闭ProgressDialog
            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(mWebView.canGoBack()){
                //返回上一页面
                mWebView.goBack();
                return true;
            }else{
                //退出程序
                System.exit(0);
            }
        }
        return super.onKeyDown(keyCode, event);
    }
}


为了更好的支持用户体验,可以添加以下几个属性:

设置加入javascript:该属性在websetting中。

[code]WebSettings settings = mWebView.getSettings();
settings.setJavaScriptEnabled(true);//启用支持JavaScript


判断页面加载过程,使用progressDialog

使用缓存,优先使用缓冲加载

settings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);


源码下载
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: