zoukankan      html  css  js  c++  java
  • android-WebView

    使用WebView 加载页面

    一、加载页面 使用loadUrl()
      web资源:webView.loadUrl("http://www.baidu.com");
      本地文件用:webView.loadUrl("file://android_asset/xx.html");

      使页面获得焦点:webView.requestFocus();

    二、 获取网络访问权限

       <uses-permission android:name="android.permission.INTERNET"/>

    三、 在WebView中使用Javascript
         WebSettings 启用
         WebView webView=(WebView)findViewById(R.id.webview);
         getSettings() 获取WebSettings的值
         WebSettings webSettings=webView.getSettings()
         setJavaScriptEnabled() 启用
         Javascript webSettings.setJavaScriptEnabled(true)
    四、 处理页面导航

       WebView通常默认浏览器打开并加载目标URL,然而你可以在WebView中覆盖这一行为,如此
       链接就会在WebView中打开。

         webView.setWebViewClient(new WebViewClient())
         WebViewClient:帮助WebView去处理一些页面控制和请求通知
      

    五、 后退与前进
       当WebView覆盖URL加载,自动生成历史访问记录;可以通过goBack()或goForward()向后
       向前访问已经访问过的站点

    六、 判断页面加载过程


    七、 WebView缓存的应用

    八、缓存  

      优先使用缓存:
         webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
       不适用缓存(默认):
         webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);

    import android.app.Activity;
    import android.app.ProgressDialog;
    import android.os.Bundle;
    import android.view.KeyEvent;
    import android.webkit.WebChromeClient;
    import android.webkit.WebSettings;
    import android.webkit.WebView;
    import android.webkit.WebViewClient;
    import android.widget.Toast;

    public class MainActivity extends Activity {

    private String url="http://2014.qq.com/";
    private WebView webView;
    private ProgressDialog pd;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    /*Uri uri=Uri.parse(url);
    Intent intent=new Intent(Intent.ACTION_VIEW,uri);
    startActivity(intent);*/
    init();
    }

    private void init() {
    // TODO Auto-generated method stub
    webView =(WebView) findViewById(R.id.webView);

    webView.loadUrl(url);
    //webView.loadUrl("file:///android_asset/test1.html");

    //覆盖WebView通过第三方或者系统浏览器打开
    webView.setWebViewClient(new WebViewClient(){
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
    // true--在webView中打开 false---通过第三方或者系统浏览器打开
    view.loadUrl(url);
    return true;
    }
    });

    //启用javascript
    WebSettings webSettings=webView.getSettings();
    webSettings.setJavaScriptEnabled(true);
    //优先使用缓存
    webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);

    webView.setWebChromeClient(new WebChromeClient(){
    @Override
    public void onProgressChanged(WebView view, int newProgress) {
    //newProgress:1~100
    if(newProgress==100){
    //加载完毕,关闭ProgressDialog
    closeDialog();
    }else{
    //正在加载,打开ProgressDialog
    openDialog(newProgress);
    }
    }

    private void openDialog(int newProgress) {
    // TODO Auto-generated method stub
    if(pd==null){
    pd=new ProgressDialog(MainActivity.this);
    pd.setTitle("正在加载");
    pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);//横向进度条
    pd.setProgress(newProgress);
    pd.show();
    }else{
    pd.setProgress(newProgress);
    }
    }

    private void closeDialog() {
    // TODO Auto-generated method stub
    if(pd!=null&&pd.isShowing()){
    pd.dismiss();
    }
    }
    });
    }
    //改写物理按键一键返回的逻辑
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
    // TODO Auto-generated method stub
    if(keyCode==KeyEvent.KEYCODE_BACK){
    Toast.makeText(this, webView.getUrl(),Toast.LENGTH_SHORT).show();
    if(webView.canGoBack()){
    webView.goBack();
    return true;
    }else{
    System.exit(0);
    }
    }
    return super.onKeyDown(keyCode, event);
    }
    }

  • 相关阅读:
    软件工程基础之二——阅读《软件工程基础》的问题
    软件工程基础之一——个人介绍与计划
    个人介绍
    sudoku
    GitHub地址
    疑问②
    概览提问①
    jsp内置对象
    tomcat的环境变量配置
    构造方法的重载代码
  • 原文地址:https://www.cnblogs.com/iamkk/p/5920274.html
Copyright © 2011-2022 走看看