WebView:带进度条的WebView

WebView的使用在移动开发中,已经变得非常常见,或者可以说是不可或缺的。

WebView能加载显示网页,可以将其视为一个浏览器;使用webkit渲染引擎加载显示界面。

    今天就给大家带来一个自定义demo:

带进度条的WebView:


import android.annotation.SuppressLint;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.webkit.WebSettings.LayoutAlgorithm;
import android.widget.ProgressBar;

import com.stateunion.p2p.etongdai.R;

/**
 * 自定义WebView,带有进度条
 * 
 * @author star
 * 
 */
public class MyWebView extends WebView {

	private ProgressBar progressbar;

	@SuppressWarnings("deprecation")
	public MyWebView(Context context, AttributeSet attrs) {
		super(context, attrs);
		progressbar = new ProgressBar(context, null,
				android.R.attr.progressBarStyleHorizontal);
		progressbar.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
				10, 0, 0));

		Drawable drawable = context.getResources().getDrawable(
				R.drawable.progress_bar_states);
		progressbar.setProgressDrawable(drawable);
		addView(progressbar);
		setWebView();
	}

	/**
	 * webView的相关设置:支持缩放,支持javascript,支持屏幕自适应
	 * */
	@SuppressLint("SetJavaScriptEnabled")
	private void setWebView() {
		// 清除浏览器缓存
		clearCache(true);
		setWebChromeClient(new WebChromeClient());
		WebSettings settings = getSettings();
		settings.setUseWideViewPort(true);// 设定支持viewport
		settings.setLoadWithOverviewMode(true);
		settings.setBuiltInZoomControls(true);
		settings.setSupportZoom(true);// 设定支持缩放

		// 支持javascript
		settings.setJavaScriptEnabled(true);
		// 自适应屏幕:页面居中显示
		settings.setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);
		settings.setLoadWithOverviewMode(true);

		// 设置点击页面中链接,继续在当前browser中响应
		setWebViewClient(new WebViewClient() {
			@SuppressWarnings("unused")
			public boolean shouldOverrideUrlLoading(MyWebView view, String url) {
				view.loadUrl(url);
				return true;
			}

		});
	}

	public class WebChromeClient extends android.webkit.WebChromeClient {
		@Override
		public void onProgressChanged(WebView view, int newProgress) {
			if (newProgress == 100) {
				progressbar.setVisibility(GONE);
			} else {
				if (progressbar.getVisibility() == GONE)
					progressbar.setVisibility(VISIBLE);
				progressbar.setProgress(newProgress);
			}
			super.onProgressChanged(view, newProgress);
		}

	}

	@SuppressWarnings("deprecation")
	@Override
	protected void onScrollChanged(int l, int t, int oldl, int oldt) {
		LayoutParams lp = (LayoutParams) progressbar.getLayoutParams();
		lp.x = l;
		lp.y = t;
		progressbar.setLayoutParams(lp);
		super.onScrollChanged(l, t, oldl, oldt);
	}
}
</pre><pre>

<pre code_snippet_id="1573436" snippet_file_name="blog_20160203_11_9219024" name="code" class="java" style="font-size: 18px; font-weight: bold;">具体的使用,我就不再赘述了,就像普通控件使用方式一样,简单步骤如下:
1:在布局文件中声明webview,记得加上全路径引用;</span>
2:在activity中实例化webview;</span>
3:设置webview的loadurl()方法,设置要显示的页面链接;</span>
4:相应设置:(比如响应链接,缩放,适应界面等等都已经自定义好了),这里只需做自己需要的其他设置就好;</span>
5:支持回退的设置:onKeyDown()方法。。。

 


示例图片:


 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值