Android WebView属性及用法

实现WebView有以下两种不同的方法:
第一种方法的步骤:
1.在要Activity中实例化WebView组件:WebView webView = new WebView(this);
2.调用WebView的loadUrl()方法,设置WevView要显示的网页:

//访问网址:webView.loadUrl("http://www.***.com");
//访问本地文件:webView.loadUrl(file:///android_asset/XX.html); 本地文件存放在:assets 文件中

3.调用Activity的setContentView( )方法来显示网页视图
4.用WebView点链接看了很多页以后为了让WebView支持回退功能,需要覆盖覆盖Activity类的onKeyDown()方法,如果不做任何处理,点击系统回退剪键,整个浏览器会调用finish()而结束自身,而不是回退到上一页面
5.需要在AndroidManifest.xml文件中添加权限,否则会出现Web page not available错误。

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

public void webView(){
    LayoutInflater inflater = LayoutInflater.from(this);
       View popView = inflater.inflate(R.layout.bagview, null);

        webView = (WebView) popView.findViewById(R.id.webView);<span style="color: black; font-family: Consolas, 'Courier New', Courier, mono, serif; font-size: 14.3999996185303px; line-height: 18px; background-color: inherit;">  </span>

        //设置WebView的一些缩放功能点
        webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);  
        webView.setHorizontalScrollBarEnabled(false);  
        webView.getSettings().setSupportZoom(true);  
        //设置WebView可触摸放大缩小
        webView.getSettings().setBuiltInZoomControls(true);  
        webView.setInitialScale(70);  
        webView.setHorizontalScrollbarOverlay(true); 
        //WebView双击变大,再双击后变小,当手动放大后,双击可以恢复到原始大小
        //webView.getSettings().setUseWideViewPort(true); 
        //提高渲染的优先级
        webView.getSettings().setRenderPriority(RenderPriority.HIGH);
        //允许JS执行
        webView.getSettings().setJavaScriptEnabled(true);
        //把图片加载放在最后来加载渲染
        //webView.getSettings().setBlockNetworkImage(true); 
        //用WebView将字符串以HTML的形式显示出来 
        //webView.loadDataWithBaseURL("fake://not/needed", <p>zzz</p>, "text/html", "utf-8", "");
        //在同种分辨率的情况下,屏幕密度不一样的情况下,自动适配页面: 
        DisplayMetrics dm = getResources().getDisplayMetrics();
        // 获取当前界面的高度
        //int width = dm.widthPixels;
        //int height = dm.heightPixels;
        int scale = dm.densityDpi;
        if (scale == 240) { 
            webView.getSettings().setDefaultZoom(ZoomDensity.FAR);
        } else if (scale == 160) {
            webView.getSettings().setDefaultZoom(ZoomDensity.MEDIUM);
        } else {
            webView.getSettings().setDefaultZoom(ZoomDensity.CLOSE);
        }
        webView.setWebViewClient(new WebViewClient() {
            // 点击超链接的时候重新在原来进程上加载URL
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                view.loadUrl(url);
                return true;
            }

            // webview加载完成
            @Override
            public void onPageFinished(WebView view, String url) {
                progressBar.setVisibility(View.GONE);
                // progressBar.setVisibility(View.VISIBLE);
            }
        });
        //listview,webview中滚动拖动到顶部或者底部时的阴影
        webView.setOverScrollMode(View.OVER_SCROLL_NEVER);
        //webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);//使用缓存
        //WebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE); //默认不使用缓存!
                webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY); //取消滚动条白边效果
        webView.loadUrl(url);

        dialog.setContentView(popView);
        dialog.setCanceledOnTouchOutside(true);
        dialog.show();
    }
    //设置回退 
    //覆盖Activity类的onKeyDown(int keyCoder,KeyEvent event)方法 
  @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
        if ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) { 
            webview.goBack(); //goBack()表示返回WebView的上一页面 
            return true; 
        } 
        return false; 
   }
第二种方法在布局文件中声明WebView


获得WebView网页加载初始化和完成事件
步骤:
1 创建一个自己的WebViewClient(继承 WebViewClient 类)如WebViewClient
2 重载 里面的 onPageFinished(WebView view, String url)方法,(webview加载完成会调用这个方法),这个方法放自己想要做的事情,在webview加载完成以后
3 关联 你自己的webviewclient 与 webview 通过 这个方法:webView.setWebViewClient( new WebViewClient();

mWebView.setWebViewClient(new WebViewClient()
{   
 @Override
public void onPageFinished(WebView view, String url) 
{
//结束
super.onPageFinished(view, url);
}
  @Override
  public void onPageStarted(WebView view, String url, Bitmap favicon) 
  {
  //开始
  super.onPageStarted(view, url, favicon);
  }
});
如果需要监视加载进度的,需要创建一个自己的WebChromeClient类,并重载方法onProgressChanged,再webview.setWebChromeClient(new MyWebChromeClient())即可:

class MyWebChromeClient extends WebChromeClient {
@Override
public void onProgressChanged(WebView view, int newProgress) {
// TODO Auto-generated method stub
super.onProgressChanged(view, newProgress);
}
}
例如:
public class WebPageLoader extends Activity {
	final Activity activity = this;


	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		this.getWindow().requestFeature(Window.FEATURE_PROGRESS);
		setContentView(R.layout.main);
		WebView webView = (WebView) findViewById(R.id.webView);
		webView.getSettings().setJavaScriptEnabled(true);
		webView.getSettings().setSupportZoom(true);
		webView.setWebChromeClient(new WebChromeClient() {
			public void onProgressChanged(WebView view, int progress) {
				activity.setTitle("Loading...");
				activity.setProgress(progress * 100);
				if (progress == 100)
					activity.setTitle(R.string.app_name);
			}
		});
		webView.setWebViewClient(new WebViewClient() {
			public void onReceivedError(WebView view, int errorCode,
					String description, String failingUrl) { // Handle the error
			}


			public boolean shouldOverrideUrlLoading(WebView view, String url) {
				view.loadUrl(url);
				return true;
			}
		});
		webView.loadUrl("http://www.sohu.com");
	}
}
WebViewClient就是帮助WebView处理各种通知、请求事件的,具体来说包括: 
  onLoadResource 
  onPageStart 
  onPageFinish 
  onReceiveError 
  onReceivedHttpAuthRequest 

WebChromeClient是辅助WebView处理Javascript的对话框,网站图标,网站title,加载进度等 
  onCloseWindow(关闭WebView) 
  onCreateWindow() 
  onJsAlert (WebView上alert是弹不出来东西的,需要定制你的WebChromeClient处理弹出) 
  onJsPrompt 
  onJsConfirm 
  onProgressChanged 
  onReceivedIcon 
  onReceivedTitle 


转载自:http://blog.csdn.net/sxsj333/article/details/6742589

http://www.cnblogs.com/ftxe/p/3642777.html?utm_source=tuicool&utm_medium=referral



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值