1、设置内部打开浏览器,而不是外部浏览器打开连接,那么必须要重写WebViewClient类里面的shouldOverrideUrlLoading方法:

mWebview.setWebViewClient(new WebViewClient(){

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}

});

2、设置网页进度条progress,在布局添加控件progress,重写onProgressChanged方法:

private class MyWebChromeClient extends WebChromeClient {
@Override
public void onProgressChanged(WebView view, int newProgress) {

                    if (newProgress == 100) {                      progress.setVisibility(View.GONE);                    } else {                        if (progress.getVisibility() == View.GONE)                            progress.setVisibility(View.VISIBLE);                        progress.setProgress(newProgress);                    }
super.onProgressChanged(view, newProgress);
}
}

     mWebview.setWebChromeClient(new MyWebChromeClient ());
3、按返回键时, 不退出程序而是返回上一浏览页面:

public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {
mWebView.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}

4、JS和WebView交互:

首先设置WebView支持JS脚本,设置如下:

WebSettings settings = mWebView.getSettings();
settings.setJavaScriptEnabled(true);
settings.setJavaScriptCanOpenWindowsAutomatically(true);

其次设置本地调用对象及其接口
mWebView.addJavascriptInterface(new JavaScriptObject(mContext), "myObj");

单独写一个类,封装JS要调用的本地方法,由于版本问题需要加注解。在本地方法

里面如果需要更新android页面需要跑在UI线 程里面例如加一个runOnUiThread,否则会报错
public class JavaScriptObject {
Context mContxt;
@JavascriptInterface //sdk17版本以上加上注解
public JavaScriptObject(Context mContxt) {
this.mContxt = mContxt;
}
public void funFromAndroid(String name) {
Toast.makeText(mContxt, name, Toast.LENGTH_LONG).show();
}
}

在JS里面如下写法即可

myObj.funFromAndroid("调用android本地方法funFromAndroid");

那么在android里如何调用JS方法呢,方法如下,如果JS里面有方法叫funFromjs(),那么做法如下即可:

mWebView.loadUrl("javascript:funFromjs()");

这也可以来做H5局部刷新。

5、打开页面时, 自适应屏幕:
WebSettings webSettings = mWebView .getSettings();
webSettings.setUseWideViewPort(true);//设置此属性,可任意比例缩放
webSettings.setLoadWithOverviewMode(true);
6、使页面支持缩放:
WebSettings webSettings = mWebView .getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setBuiltInZoomControls(true);
webSettings.setSupportZoom(true);
7、如果webView中需要用户手动输入用户名、密码或其他,则webview必须设置支持获取手势焦点。
webview.requestFocusFromTouch();

8、WebView 加载界面主要调用三个方法:LoadUrl、LoadData、LoadDataWithBaseURL.
LoadUrl 直接加载网页、图片并显示.(本地或是网络上的网页、图片、gif)

LoadData 显示文字与图片内容 (模拟器1.5、1.6)

LoadDataWithBase 显示文字与图片内容(支持多个模拟器版本)

9、webview打开下载链接的时候
mWebView.setDownloadListener(new DownloadListener() {
@Override
public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) {
Uri uri = Uri.parse(url);
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
}
});

10、WebSettings 的常用方法介绍
setJavaScriptEnabled(true); //支持js
setPluginsEnabled(true); //支持插件
setUseWideViewPort(false); //将图片调整到适合webview的大小
setSupportZoom(true); //支持缩放
setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN); //支持内容重新布局
supportMultipleWindows(); //多窗口
setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); //关闭webview中缓存
setAllowFileAccess(true); //设置可以访问文件
setNeedInitialFocus(true); //当webview调用requestFocus时为webview设置节点
webview webSettings.setBuiltInZoomControls(true); //设置支持缩放
setJavaScriptCanOpenWindowsAutomatically(true); //支持通过JS打开新窗口
setLoadWithOverviewMode(true); // 缩放至屏幕的大小
setLoadsImagesAutomatically(true); //支持自动加载图片






更多相关文章

  1. android中自定义Button,设置不同背景图片。
  2. Android之 inflate() 方法总结
  3. android 图片缩放抗锯齿
  4. Android读取服务器图片的三种方法
  5. android播放本地工程里的音乐和视频的方法
  6. ActionBar的一些使用方法
  7. android制作圆角图片和图片倒影
  8. android 获取本地图片或音乐

随机推荐

  1. 【Android Demo】简单手机通讯录
  2. Android中WebView拦截替换网络请求数据
  3. ANDROID物联网开发
  4. Android蓝牙开发浅谈【转】
  5. android px dip 等的区别
  6. 跨平台应用app开发实践方案 Qt5 for Andr
  7. 安卓 android 开发相关
  8. android studio 编译高级篇-gradle多版本
  9. android在build中配置资源路径的方式
  10. Android属性动画之ObjectAnimator和Anima