Android WebView常用方法
2015-03-30 21:12
405 查看
package com.orgcent.webview; import android.app.Activity; import android.os.Bundle; import android.webkit.JsPromptResult; import android.webkit.JsResult; import android.webkit.WebChromeClient; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; import android.webkit.WebSettings.LayoutAlgorithm; public class AndroidWebViewActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); WebView content_wv = (WebView) findViewById(R.id.content_wv); WebSettings ws = content_wv.getSettings(); ws.setJavaScriptEnabled(true); // 设置支持javascript脚本 ws.setAllowFileAccess(true); // 允许访问文件 ws.setBuiltInZoomControls(true); // 设置显示缩放按钮 ws.setSupportZoom(true); //支持缩放 /** * 用WebView显示图片,可使用这个参数 * 设置网页布局类型: * 1、LayoutAlgorithm.NARROW_COLUMNS : 适应内容大小 * 2、LayoutAlgorithm.SINGLE_COLUMN:适应屏幕,内容将自动缩放 */ ws.setLayoutAlgorithm(LayoutAlgorithm.NARROW_COLUMNS); ws.setDefaultTextEncodingName("utf-8"); //设置文本编码 ws.setAppCacheEnabled(true); ws.setCacheMode(WebSettings.LOAD_DEFAULT);//设置缓存模式 //添加Javascript调用java对象 content_wv.addJavascriptInterface(this, "java2js"); content_wv.setWebViewClient(new WebViewClientDemo()); content_wv.setWebChromeClient(new WebViewChromeClientDemo()); //设置打开的网页 content_wv.loadUrl("http://orgcent.com"); //使用WebView来显示图片 content_wv.loadData("<img src='http://orgcent.com'/>", "text/html", "utf8"); } private class WebViewClientDemo extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url);// 当打开新链接时,使用当前的 WebView,不会使用系统其他浏览器 return true; } } private class WebViewChromeClientDemo extends WebChromeClient { // 设置网页加载的进度条 public void onProgressChanged(WebView view, int newProgress) { } // 获取网页的标题 public void onReceivedTitle(WebView view, String title) { } // JavaScript弹出框 @Override public boolean onJsAlert(WebView view, String url, String message, JsResult result) { return super.onJsAlert(view, url, message, result); } // JavaScript输入框 @Override public boolean onJsPrompt(WebView view, String url, String message, String defaultValue, JsPromptResult result) { return super.onJsPrompt(view, url, message, defaultValue, result); } // JavaScript确认框 @Override public boolean onJsConfirm(WebView view, String url, String message, JsResult result) { return super.onJsConfirm(view, url, message, result); } } }
(1)// 设置支持javascript脚本
mWebView.getSettings().setJavaScriptEnabled(true);
(2)// 支持通过js打开新的窗口
mWebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
(3)当我们加载Html时候,会在我们data/应用package下生成database与cache两个文件夹:
1、缓存构成
/data/data/package_name/cache/
/data/data/package_name/database/webview.db
/data/data/package_name/database/webviewCache.db
缓存模式(5种)
LOAD_CACHE_ONLY: 不使用网络,只读取本地缓存数据
LOAD_DEFAULT: 根据cache-control决定是否从网络上取数据。
LOAD_CACHE_NORMAL: API level 17中已经废弃, 从API level 11开始作用同LOAD_DEFAULT模式
LOAD_NO_CACHE: 不使用缓存,只从网络获取数据.
LOAD_CACHE_ELSE_NETWORK,只要本地有,无论是否过期,或者no-cache,都使用缓存中的数据。
eg:mWebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
—————————————————————————————————————————————————————————————
(4)mWebView.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);
1.这段代码设定了WebView的HTML布局方式,其中包含了下面的三个参数值
NORMAL:正常显示,没有渲染变化。
SINGLE_COLUMN:把所有内容放到WebView组件等宽的一列中。 //这个是强制的,把网页都挤变形了
NARROW_COLUMNS:可能的话,使所有列的宽度不超过屏幕宽度。 //好像是默认的
2.Android中Webview自适应屏幕
第一种:
WebSetting settings = webView.getSettings();
settings.setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);
把所有内容放在webview等宽的一列中。(可能会出现页面中链接失效)
第二种:
settings.setUseWideViewPort(true);
settings.setLoadWithOverviewMode(true);
第三种:
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int mDensity = metrics.densityDpi;www.2cto.com
if (mDensity == 120) {
settings.setDefaultZoom(ZoomDensity.CLOSE);
}else if (mDensity == 160) {
settings.setDefaultZoom(ZoomDensity.MEDIUM);
}else if (mDensity == 240) {
settings.setDefaultZoom(ZoomDensity.FAR);
}
—————————————————————————————————————————————————————————————
(5)mWebView.setHorizontalScrollBarEnabled(true); mWebView.setVerticalScrollBarEnabled(true);
//设置是否显示滚动条
(6)mWebView.getSettings().setUserAgentString(USER_AGENT_STRING);//
设置支持各种不同的设备
(7)WebView显示html文件时,若要达到和PC上浏览器显示的效果完全一样,只需对WebView做一下设置即可:
适应全屏
39 适应竖屏
57 适应横屏
mWebView.setInitialScale(39);
注意的是:html如果字体太小则在Android手机上显示的就很小。一般为6、7号字体
eg:mWebView.setInitialScale(39);—————————————————————————————————————————————————————————————
(8)1.setPluginsEnabled现在已经不再支持,改为WebView.getSettings().setPluginState(WebSettings.PluginState.ON);,不过18版本以后也不再支持了因为adobe
不再开发flash新的移动版了。
eg:mWebView.getSettings().setPluginState(WebSettings.PluginState.ON);
(9)mWebView.getSettings().setDefaultTextEncodingName("GB2312") ; //设置字符编码集
(10)设置该视图的滚动模式 void
setOverScrollMode(int mode)
eg:mWebView.setOverScrollMode(View.OVER_SCROLL_IF_CONTENT_SCROLLS);
(11) mWebView.setScrollBarStyle
//设置滚动条风格
eg:mWebView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY); //取消滚动条
(12)mWebView.getSettings().setSupportZoom(true); //
设置可以支持缩放
(13)mWebView.getSettings().setBuiltInZoomControls(true);//
设置出现缩放工具
(14)webview.requestFocusFromTouch(); 如果webView中需要用户手动输入用户名、密码或其他,则webview必须设置支持获取手势焦点。
(15)//mWebView.loadUrl("http://www.pconline.com.cn/"); //设置加载页面
实例:
package com.channel.economic.ui; import android.annotation.SuppressLint; import android.content.Intent; import android.graphics.Bitmap; import android.os.Bundle; import android.text.TextUtils; import android.view.View; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; import butterknife.ButterKnife; import butterknife.InjectView; import com.channel.economic.Config; import com.channel.economic.R; import com.channel.economic.util.Log; import com.channel.economic.view.ProgressWebView; /** * webview * * Created by huagt on 14-12-21. */ public class WebViewUI extends AbsActionUI { /** * 需要加载的网页 */ public static final String KEY_LOAD_URL = "key:load_url"; /** * 需要显示的标题名 */ public static final String KEY_CONTENT_NAME = "key:cntent_name"; @InjectView(R.id.web_view) ProgressWebView mWebView; private String mCurrentLoadUrl; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_webview); ButterKnife.inject(this); mCurrentLoadUrl = getIntent().getStringExtra(KEY_LOAD_URL); String title = getIntent().getStringExtra(KEY_CONTENT_NAME); setTitle(title); initWebView(); } /** * 初始化WebView组件 */ @SuppressLint({"AddJavascriptInterface", "SetJavaScriptEnabled"}) private void initWebView() { mWebView.getSettings().setJavaScriptEnabled(true); mWebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true); mWebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE); mWebView.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS); mWebView.setHorizontalScrollBarEnabled(true); mWebView.setVerticalScrollBarEnabled(true); final String USER_AGENT_STRING = mWebView.getSettings() .getUserAgentString() + " Rong/2.0"; mWebView.getSettings().setUserAgentString(USER_AGENT_STRING); //mWebView.setInitialScale(39); mWebView.getSettings().setPluginState(WebSettings.PluginState.ON); mWebView.getSettings().setDefaultTextEncodingName("GB2312") ; mWebView.setWebViewClient(viewClient); mWebView.setOverScrollMode(View.OVER_SCROLL_IF_CONTENT_SCROLLS); //设置WebView的一些缩放功能点 mWebView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY); //自适应屏幕 //mWebView.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN); mWebView.getSettings().setLoadWithOverviewMode(true); // 设置可以支持缩放 mWebView.getSettings().setSupportZoom(true); // 设置出现缩放工具 mWebView.getSettings().setBuiltInZoomControls(true); mWebView.requestFocus(); //mCurrentLoadUrl = "http://2015zh.hk001.china-dxz.net/web/"; mWebView.(mCurrentLoadUrl); //mWebView.loadUrl("http://www.pconline.com.cn/"); } /** * WebView加载状态客户端回调 */ private WebViewClient viewClient = new WebViewClient() { @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { } @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { if (url.contains("tb.jsp")) { makeToast("付款成功!"); setResult(RESULT_OK); Intent orderIntent = new Intent(WebViewUI.this,MineOrdersUI.class); startActivity(orderIntent); WebViewUI.this.finish(); } else { view.loadUrl(url); } return true; } @Override public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { //view.loadUrl("file:///android_asset/404.html"); } }; }
相关文章推荐
- Android控件WebView的属性设置和相关常用方法总结
- Android应用开发中WebView的常用方法笔记整理
- android Webview截图的常用方法与遇到的问题
- Android网络技术之WebView常用方法
- Android WebView的常用方法
- Android的WebView的常用设置和方法
- Android网络技术之WebView常用方法
- WebSetting常用方法&WebViewClient常用方法
- Android编程 - WebView控件基本使用方法
- 在本地UI使用webview,在html页面用js与android通信方法。
- Android 使WebView支持HTML5 Video(全屏)播放的方法
- android webView使用方法二
- Android中WebView实现Javascript调用Java类方法
- android利用WebView与JavaScript交互的方法
- android view的一些常用触发方法
- Android的Webview中,javascript如何调用java方法
- Android WebView的loadData方法注意事项
- android文本组件textView属性autolink设置为web,显示网址的处理方法
- Android中WebView方法WebViewClient和WebChromeClient的区别
- 利用WebView通过javascript调用android java方法