android 中webview基本使用的方法小结
16lz
2022-07-20
随着使用h5和其他前端技术开发的webapp 应用越来越多,使用原生开发的app 有时候需要嵌入一些新的网页,众所周知webview控件中可以加载网页。下面就一些使用方法进行简单的小结,其实使用技巧还是蛮多的。
网络上相关文章:
点击Android混合开发之WebView使用总结打开链接
点击打Android混合开发之WebView与Javascript交互开链接
感谢博主。
0.WebView的实质就是loadUrl,所以前提是设备接入网络,首先进行网络的判断。
添加网络权限:
网络状态的判断: // 网络状态public boolean isNetworkConnected(Context context) {if (context != null) {ConnectivityManager mConnectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);NetworkInfo mNetworkInfo = mConnectivityManager.getActiveNetworkInfo();if (mNetworkInfo != null) {return mNetworkInfo.isAvailable();}}return false;
这只是最简单的网络判断,当然是可以进行更细致的判断,比如无线,4G 等。 1.只让本应用程序的webview加载网页而不调用外部浏览器的办法
设置WebViewClient,并重写WebViewClient的shouldOverrideUrlLoading方法返回true。系统默认返回的是false。
mWebView.setWebViewClient(new WebViewClient(){ @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { // TODO Auto-generated method stub view.loadUrl(url); return true; } });
2.网页加载完成与加载失败的监听。
重写WebViewClient即可。然后进行设置 mwebView.setWebViewClient(new webClient());
private class webClient extends WebViewClient{@Overridepublic void onPageFinished(WebView view, String url) {// TODO Auto-generated method stubsuper.onPageFinished(view, url);}@Overridepublic void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {// TODO Auto-generated method stubsuper.onReceivedError(view, errorCode, description, failingUrl);view.loadUrl("file:///android_asset/defaultpage/index.html"); //加载一个默认的网页}}
3.webView相关属性的设置。
WebSettings webSettings = webView.getSettings();webSettings.setUseWideViewPort(true);// 设置此属性,可任意比例缩放webSettings.setLoadWithOverviewMode(true); // 充满全屏幕webSettings.setBuiltInZoomControls(false);webSettings.setJavaScriptEnabled(true);webSettings.setAppCacheEnabled(true);// 设置缓存模式webSettings.setCacheMode(WebSettings.LOAD_DEFAULT);// 开启 DOM storage API 功能webSettings.setDomStorageEnabled(true);webView.setHorizontalScrollBarEnabled(false); // 水平不显示滚动条webView.setOverScrollMode(View.OVER_SCROLL_NEVER); // 禁止即在网页顶出现一个空白,又自动回去。webView.setWebChromeClient(new webChromClient());webView.setWebViewClient(new webClient());
附一个示例代码:布局文件比较简单,放了一个WebView控件.
import android.app.Activity;import android.app.ProgressDialog;import android.content.Context;import android.content.Intent;import android.graphics.Bitmap;import android.net.ConnectivityManager;import android.net.NetworkInfo;import android.os.Bundle;import android.view.View;import android.webkit.WebChromeClient;import android.webkit.WebSettings;import android.webkit.WebView;import android.webkit.WebViewClient;import android.widget.Toast;public class HtmlInfoActivity extends Activity {private WebView webView;// guo addprivate ProgressDialog dialog = null;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.systemsinfo_layout);webView = (WebView) findViewById(R.id.webView);WebSettings webSettings = webView.getSettings();webSettings.setUseWideViewPort(true);// 设置此属性,可任意比例缩放webSettings.setLoadWithOverviewMode(true); // 充满全屏幕webSettings.setBuiltInZoomControls(false);webSettings.setJavaScriptEnabled(true);webSettings.setAppCacheEnabled(true);// 设置缓存模式webSettings.setCacheMode(WebSettings.LOAD_DEFAULT);// 开启 DOM storage API 功能webSettings.setDomStorageEnabled(true);webView.setHorizontalScrollBarEnabled(false); // 水平不显示滚动条webView.setOverScrollMode(View.OVER_SCROLL_NEVER); // 禁止即在网页顶出现一个空白,又自动回去。webView.setWebChromeClient(new webChromClient());webView.setWebViewClient(new webClient());// Intent intent = getIntent();//得到上一个Activity传递的值// String str=intent.getStringExtra("url");String str = "https://www.baidu.com";dialog = ProgressDialog.show(HtmlInfoActivity.this, null, "正在加载中,请稍后···");webView.loadUrl(str);}private class webChromClient extends WebChromeClient {@Overridepublic void onProgressChanged(WebView view, int newProgress) {// TODO Auto-generated method stubsuper.onProgressChanged(view, newProgress);}}private class webClient extends WebViewClient {@Overridepublic void onPageStarted(final WebView view, String url, Bitmap favicon) {// TODO Auto-generated method stubsuper.onPageStarted(view, url, favicon);}@Overridepublic void onPageFinished(WebView view, String url) {// TODO Auto-generated method stub// super.onPageFinished(view, url);dialog.dismiss();}@Overridepublic void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {// TODO Auto-generated method stubsuper.onReceivedError(view, errorCode, description, failingUrl);// guo addToast.makeText(HtmlInfoActivity.this, "网页加载出错!", Toast.LENGTH_LONG).show();view.loadUrl("file:///android_asset/defaultpage/index1.html"); // 加载一个默认的本地网页}@Overridepublic boolean shouldOverrideUrlLoading(WebView view, String url) {// TODO Auto-generated method stubview.loadUrl(url);return true;}}@Overrideprotected void onResume() {// TODO Auto-generated method stubsuper.onResume();}@Overrideprotected void onDestroy() {// TODO Auto-generated method stubsuper.onDestroy();}// 网络状态判断public boolean isNetworkConnected(Context context) {if (context != null) {ConnectivityManager mConnectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);NetworkInfo mNetworkInfo = mConnectivityManager.getActiveNetworkInfo();if (mNetworkInfo != null) {return mNetworkInfo.isAvailable();}}return false;}}
更多相关文章
- android EditText设置不可写
- android“设置”里的版本号
- Android(安卓)Chromium WebView html js 开发系列
- 在Fragment中设置控件点击方法,执行失败。
- Android(安卓)闹钟管理类的使用
- Android设置通知栏/状态栏透明改变通知栏颜色和app最上部分颜色
- android 设置中划线 下划线等
- Andorid Dialog 示例【慢慢更新】
- Android(安卓)P SystemUI之StatusBar UI布局status_bar.xml解析