Android 控件: Webview 的一些知识点

WebView 加载网页,当点击返回键的时,会显示上一个页面,并刷新。

同时可以对返回上一个页面进行干预,就是用到了缓存。

webview加载网页的几个模式,即websetting中设置的加载模式。websetting.setCacheMode( int  mode)

LOAD_CACHE_ELSE_NETWORK:只要本地有,无论是否过期,或者no-cache,都使用缓存中的数据。

LOAD_CACHE_ONLY:只加载缓存数据,如果没有缓存数据,就出现加载失败;

LOAD_DEFAULT:默认加载方式, 根据cache-control决定是否从网络上取数据;

LOAD_NO_CACHE:不使用缓存,只从网络获取数据;

LOAD_CACHE_NORMAL: API level 17中已经废弃, 从API level 11开始作用同LOAD_DEFAULT模式

新的需求:(点击返回键,返回到上一个点击的页面但是不刷新,点击新的页面进行刷新加载,这个需求是要求与 iOS 的浏览效果保持一致)

 1 public class WebViewActivity extends Activity{  
 2   
 3     private WebView mWebView;  
 4     @Override  
 5     protected void onCreate(Bundle savedInstanceState) {  
 6         super.onCreate(savedInstanceState);  
 7         setContentView(R.layout.activity_webview);  
 8           
 9         mWebView = (WebView) findViewById(R.id.webview);  
10           
11         initWebView();  
12           
13         mWebView.loadUrl("http://www.baidu.com");  
14     }  
15   
16     private void initWebView() {  
17         WebSettings ws = mWebView.getSettings();   
18         ws.setJavaScriptEnabled(true);  
19         mWebView.setWebViewClient(new WebViewClient(){  
20             @Override  
21             public boolean shouldOverrideUrlLoading(WebView view, String url) {  
22                 view.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);  
23                 view.loadUrl(url);  
24                 return super.shouldOverrideUrlLoading(view, url);  
25             }  
26         });  
27     }  
28       
29     @Override  
30     public boolean onKeyDown(int keyCode, KeyEvent event) {  
31         if(keyCode==KeyEvent.KEYCODE_BACK){  
32             if(mWebView.canGoBack()){  
33                 mWebView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);  
34                 mWebView.goBack();  
35                 return true;  
36             }  
37         }  
38         return false;  
39     }  
40 }  

webview 的其他一些设置:

webSettings.setDomStorageEnabled ( boolean );//是否支持持久化存储,保存到本地

webSettings.setJavaScriptEnabled ( boolean );//设置支持javascript脚本

webSettings.setSupportZoom ( boolean ) ;// 设置支持缩放

webSettings.setBuiltInZoomControls ( boolean );//设置是否出现缩放工具

webSettings.setDatabaseEnabled ( boolean );//开启database storage API 功能

 webSettings.setDatabasePath(path);//设置数据库缓存路径

 webSettings.setAppCacheEnabled( boolean );//设置开启application H5 Caches 功能

 webSettings.setAppCachePath(path);//设置application caches 缓存目录

//设置webview自适应屏幕

webSettings.setLayoutAlgorithm ( LayoutAlgorithm.SINGLE_COLUMN );

webSettings.setLoadWithOverviewMode ( true ); 

原文地址:https://www.cnblogs.com/liyiran/p/6417304.html