随着使用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;}}








更多相关文章

  1. android EditText设置不可写
  2. android“设置”里的版本号
  3. Android(安卓)Chromium WebView html js 开发系列
  4. 在Fragment中设置控件点击方法,执行失败。
  5. Android(安卓)闹钟管理类的使用
  6. Android设置通知栏/状态栏透明改变通知栏颜色和app最上部分颜色
  7. android 设置中划线 下划线等
  8. Andorid Dialog 示例【慢慢更新】
  9. Android(安卓)P SystemUI之StatusBar UI布局status_bar.xml解析

随机推荐

  1. android WebView加载html5介绍
  2. Android中的style和theme的用法
  3. Android实现页面悬浮显示
  4. Android(安卓)的res/values/colors自定义
  5. 深入浅出RxJava四-在Android中使用响应式
  6. ArcGIS for Android安装配置详解
  7. Android各种访问权限Permission详解
  8. Android之NDK开发
  9. android完全退出程序
  10. Android之Adapter用法总结