android开发对Webview的应用

进度条的使用是在new出一个setWebChromeClient后,可以在内部类中写 
onProgressChanged事件。

在WebView的设计中,不是什么事都要WebView类干的,有些杂事是分给其他人的,这样WebView专心干好自己的解析、渲染工作就行了。

WebViewClient就是帮助WebView处理各种通知、请求事件的,具体来说包括:
onLoadResource 
onPageStart 
onPageFinish 
onReceiveError 
onReceivedHttpAuthRequest 


WebChromeClient是辅助WebView处理Javascript的对话框,网站图标,网站title,加载进度等,包括:
onCloseWindow(关闭WebView) 
onCreateWindow() 
onJsAlert (WebView上alert是弹不出来东西的,需要定制你的WebChromeClient处理弹出) 
onJsPrompt 
onJsConfirm 
onProgressChanged 
onReceivedIcon 
onReceivedTitle


               WebSettings webSettings = communicate_web.getSettings(); 
webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
//webSettings.setAllowFileAccessFromFileURLs(true);
webSettings.setAllowFileAccess(true);


communicate_web.getSettings().setJavaScriptEnabled(true);
communicate_web.setHorizontalScrollBarEnabled(false);
communicate_web.setVerticalScrollBarEnabled(false);
communicate_web.addJavascriptInterface(new Object() {
@JavascriptInterface
public void Communicate(final String str) {
handler.post(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
Message msg = new Message();
msg.what = 1;
msg.obj = str;
handler.sendMessage(msg);
}
});
}
}, "communicate");


communicate_web.setWebChromeClient(new WebChromeClient() {
@Override
public void onProgressChanged(WebView view, int newProgress) {
// TODO Auto-generated method stub
if (newProgress == 100) {
communicate_progress.setVisibility(View.GONE);
LogUtil.i(TAG, "进度条完成...");
}
super.onProgressChanged(view, newProgress);
}
});
communicate_web.setWebViewClient(new WebViewClient() {
       @Override
       public
       boolean shouldOverrideUrlLoading(WebView view, String url) {
           view.loadUrl(url);  
           return  true;
       }
       @Override
       public void onReceivedError(WebView view, int errorCode,
        String description, String failingUrl) {
        // TODO Auto-generated method stub
        LogUtil.i(TAG, "获取到的...onReceivedError");
        super.onReceivedError(view, errorCode, description, failingUrl);
       }
   });


WebSettings webSettings = communicate_web.getSettings(); 
webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
//webSettings.setAllowFileAccessFromFileURLs(true);
webSettings.setAllowFileAccess(true);


communicate_web.getSettings().setJavaScriptEnabled(true);
communicate_web.setHorizontalScrollBarEnabled(false);
communicate_web.setVerticalScrollBarEnabled(false);

              web调用android的方法
communicate_web.addJavascriptInterface(new Object() {
@JavascriptInterface
public void Communicate(final String str) {
handler.post(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
Message msg = new Message();
msg.what = 1;
msg.obj = str;
handler.sendMessage(msg);
}
});
}
}, "communicate");


communicate_web.setWebChromeClient(new WebChromeClient() {
@Override
public void onProgressChanged(WebView view, int newProgress) {
// TODO Auto-generated method stub
if (newProgress == 100) {
communicate_progress.setVisibility(View.GONE);
LogUtil.i(TAG, "进度条完成...");
}
super.onProgressChanged(view, newProgress);
}
});
communicate_web.setWebViewClient(new WebViewClient() {

              调用应用内的浏览器
       @Override
       public
       boolean shouldOverrideUrlLoading(WebView view, String url) {
           view.loadUrl(url);  
           return  true;
       }
       @Override
       public void onReceivedError(WebView view, int errorCode,
       String description, String failingUrl) {
       // TODO Auto-generated method stub
       LogUtil.i(TAG, "获取到的...onReceivedError");
       super.onReceivedError(view, errorCode, description, failingUrl);
       }
   });


WebSettings webSettings = communicate_web.getSettings(); 
webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
//webSettings.setAllowFileAccessFromFileURLs(true);
webSettings.setAllowFileAccess(true);


communicate_web.getSettings().setJavaScriptEnabled(true);
communicate_web.setHorizontalScrollBarEnabled(false);
communicate_web.setVerticalScrollBarEnabled(false);
communicate_web.addJavascriptInterface(new Object() {
@JavascriptInterface
public void Communicate(final String str) {
handler.post(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
Message msg = new Message();
msg.what = 1;
msg.obj = str;
handler.sendMessage(msg);
}
});
}
}, "communicate");


communicate_web.setWebChromeClient(new WebChromeClient() {
@Override
public void onProgressChanged(WebView view, int newProgress) {
// TODO Auto-generated method stub
if (newProgress == 100) {
communicate_progress.setVisibility(View.GONE);
LogUtil.i(TAG, "进度条完成...");
}
super.onProgressChanged(view, newProgress);
}
});
communicate_web.setWebViewClient(new WebViewClient() {
       @Override
       public
       boolean shouldOverrideUrlLoading(WebView view, String url) {
           view.loadUrl(url);  
           return  true;
       }
       @Override
       public void onReceivedError(WebView view, int errorCode,
        String description, String failingUrl) {
        // TODO Auto-generated method stub
        LogUtil.i(TAG, "获取到的...onReceivedError");
        super.onReceivedError(view, errorCode, description, failingUrl);
       }
   });

     android调用web端的方法

      public void BackBottom() {
detail_web.loadUrl("javascript:backBottom()");
  }

             

     WebSettings常用方法:
setAllowFileAccess 启用或禁止WebView访问文件数据
setBlockNetworkImage 是否显示网络图像
setBuiltInZoomControls 设置是否支持缩放
setCacheMode 设置缓冲的模式
setDefaultFontSize 设置默认的字体大小
setDefaultTextEncodingName 设置在解码时使用的默认编码
setFixedFontFamily 设置固定使用的字体
setJavaSciptEnabled 设置是否支持Javascript
setLayoutAlgorithm 设置布局方式
setLightTouchEnabled 设置用鼠标激活被选项
setSupportZoom 设置是否支持变焦

WebViewClient常用方法:
doUpdate VisitedHistory 更新历史记录
onFormResubmission 应用程序重新请求网页数据
onLoadResource 加载指定地址提供的资源
onPageFinished 网页加载完毕
onPageStarted 网页开始加载
onReceivedError 报告错误信息
onScaleChanged WebView发生改变
shouldOverrideUrlLoading 控制新的连接在当前WebView中打开

WebChromeClient常用方法:
onCloseWindow 关闭WebView
onCreateWindow 创建WebView
onJsAlert 处理Javascript中的Alert对话框
onJsConfirm处理Javascript中的Confirm对话框
onJsPrompt处理Javascript中的Prompt对话框
onProgressChanged 加载进度条改变
onReceivedlcon 网页图标更改
onReceivedTitle 网页Title更改
onRequestFocus WebView显示焦点



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值