* * WebView 主要用来加载网页的控件 */ public class MainActivity extends AppCompatActivity { private WebView wv; private ProgressBar progressBar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); wv= (WebView) findViewById(R.id.wv); progressBar= (ProgressBar) findViewById(R.id.progressBar); //允许js执行 如果访问的html页面中存在JavaScript脚本语言 webview中需要设置支持 // WebSettings settings=wv.getSettings(); // settings.setJavaScriptEnabled(true); wv.getSettings().setJavaScriptEnabled(true); /* WebChromeClient 主要处理解析 渲染网页等浏览器操作的事情 WebChromeClient 帮助webview处理JavaScript的对话框 网站的图标 标题 加载进度等 */ wv.setWebChromeClient(new WebChromeClient()); wv.setWebChromeClient(new WebChromeClient(){ //默认webview中alert弹不出来的 onJsAlert处理alert对话框 @Override public boolean onJsAlert(WebView view, String url, String message, final JsResult result) { AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this); builder.setIcon(R.mipmap.ic_launcher); builder.setMessage(message); builder.setTitle("提示:"); builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { result.confirm(); } }); builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { result.cancel(); } }); builder.create().show(); return true; } //设置应用程序标题 @Override public void onReceivedTitle(WebView view, String title) { super.onReceivedTitle(view, title); } @Override public void onReceivedIcon(WebView view, Bitmap icon) { super.onReceivedIcon(view, icon); } @Override public void onProgressChanged(WebView view, int newProgress) { MainActivity.this.setTitle("Loading...."); if(newProgress==100){ MainActivity.this.setTitle("Loading ok"); } } }); //点击网页中的超链接时不弹出浏览器的窗口 在webview控件中加载url wv.setWebViewClient(new WebViewClient()); /* WebViewClient 帮助webview处理各种通知、请求事件等操作 */ wv.setWebViewClient(new WebViewClient(){ //点击webview中的链接 报告错误信息 @Override public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) { Toast.makeText(MainActivity.this,error.getDescription().toString(), Toast.LENGTH_LONG).show(); } //表示事件开始载入页面时调用 例如:可以设置一个loading...的界面 告诉用户程序正在加载 @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { super.onPageStarted(view, url, favicon); } //表示页面加载完成时回调的函数 @Override public void onPageFinished(WebView view, String url) { progressBar.setVisibility(View.GONE); } //当加载的网页需要重定向回调该函数 true表示由主程序控制界面加载 //false表示webview自己接受webClient的实例进行控制 @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { wv.loadUrl(url); return true; } });
WebView控件中常用的调用函数
最新推荐文章于 2023-03-09 14:50:25 发布