zoukankan      html  css  js  c++  java
  • WebView组件的应用

    1.什么是WebView?

     WebView(网络视图)能加载显示网页,可以将其视为一个浏览器,它使用了WebKit渲染引擎加载显示网页。

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginLeft="@dimen/activity_horizontal_margin"
        android:layout_marginRight="@dimen/activity_horizontal_margin"
        android:layout_marginTop="@dimen/activity_vertical_margin"
        android:layout_marginBottom="@dimen/activity_vertical_margin" >
    
        <WebView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/wv1" />
    
    </LinearLayout>
    

      使用的尺寸资源:

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <dimen name="activity_vertical_margin">10dp</dimen>
        <dimen name="activity_horizontal_margin">10dp</dimen>
    </resources>
    

      实例化webview

    wv1=(WebView)findViewById(R.id.wv1);
    wv1.loadUrl(url);//载入url,(系统自带浏览器,要用webview需要重写方法)

    websettings的设置//还可以设置很多东西

    WebSettings websettings=wv1.getSettings();//获取配置信息
    websettings.setJavaScriptEnabled(true);//设置脚本可以使用
    websettings.setCacheMode(websettings.LOAD_CACHE_ELSE_NETWORK);//打开缓存

    wv1.setWebViewClient(
    				new WebViewClient()
    				{
    					//需要重写shouldOverrideUrlLoading
    					public boolean shouldOverrideUrlLoading(WebView view,String url)
    					{
    						view.loadUrl(url);
    						return true;
    						
    					}
    					
    				});
    

      这样基本完成了,但卡顿现象明显,用户体验感太差,所以我们添加一些方法。

    package com.example.webview;
    
    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;
    
    public class MainActivity extends Activity {
    
    	private WebView wv1=null;
    	String url="http:www.baidu.com";
    	private ProgressDialog progressDialog=null;
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    		wv1=(WebView)findViewById(R.id.wv1);
    		wv1.loadUrl(url);//载入url,(系统自带浏览器,要用webview需要重写方法)
    		WebSettings websettings=wv1.getSettings();//获取配置信息
    		websettings.setJavaScriptEnabled(true);//设置脚本可以使用
    		websettings.setCacheMode(websettings.LOAD_CACHE_ELSE_NETWORK);//打开缓存
    		wv1.setWebViewClient(
    				new WebViewClient()
    				{
    					//需要重写shouldOverrideUrlLoading
    					public boolean shouldOverrideUrlLoading(WebView view,String url)
    					{
    						view.loadUrl(url);
    						return true;
    						
    					}
    					
    				});
    		wv1.setWebChromeClient(
    				new WebChromeClient()
    				{
    					public void onProgressChanged(WebView view,int newProgress)//重写的方法来显示Dialog的进度条
    					{
    						if (newProgress==100)
    						{
    							closeProgressDialog();
    						}
    						else
    						{
    							showProgressDialog(newProgress);
    						}
    						super.onProgressChanged(view, newProgress);
    					}
    					public void closeProgressDialog()//关闭progressDialog
    					{
    						progressDialog.dismiss();
    						progressDialog=null;
    					}
    					public void showProgressDialog(int newProgress)//显示progressDialog
    					{
    						if (progressDialog==null)
    						{
    							progressDialog=new ProgressDialog(MainActivity.this);
    						
    							progressDialog.setTitle("页面加载中...请稍后...");//设置标题
    							progressDialog.setProgressStyle(progressDialog.STYLE_HORIZONTAL);//设置样式
    							progressDialog.setProgress(newProgress);
    							progressDialog.show();
    						}
    						else
    						{
    							progressDialog.setProgress(newProgress);
    							progressDialog.show();
    						}
    					}
    				});
    		
    	}
    	public boolean onKeyDown(int keyCode,KeyEvent event)
    	{
    		if (keyCode==event.KEYCODE_BACK)
    		{
    			if (wv1.canGoBack())
    			{
    				wv1.goBack();
    				return true;
    			}
    			else
    			{
    				System.exit(0);
    			}
    		}
    		return super.onKeyDown(keyCode, event);
    	}
    }
    

      

  • 相关阅读:
    rem布局原理
    vue引入bootstrap.min.css报错:Cannot find module "./assets/css/bootstrap.min.css"
    安装cnpm
    安装webpack出现警告: fsevents@^1.0.0 (node_moduleschokidar ode_modulesfsevents):
    npm run dev报错,events.js:160 throw er; // Unhandled 'error' event
    让webstorm支持新建.vue文件
    电脑上已经安装mysql之后安装wamp,wamp中的mysql无法启动的解决办法
    Hibernate
    C和指针
    如何测试一个杯子
  • 原文地址:https://www.cnblogs.com/hsshy/p/4773980.html
Copyright © 2011-2022 走看看