`
HU555U
  • 浏览: 31309 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

自定义带进度条的WebView

阅读更多
重写WebView,在其中通过addView()加入进度条,主要就是进度条样式和位置的设置。

1.水平进度条
public class ProgressWebView extends WebView {

	private ProgressBar progressbar;

	public ProgressWebView(Context context, AttributeSet attrs) {
		super(context, attrs);
		progressbar = new ProgressBar(context, null,
				android.R.attr.progressBarStyleHorizontal);
		progressbar.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,
				5, 0, 0));
		addView(progressbar);
		setWebChromeClient(new WebChromeClient());
	}

	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);
		}

	}

	@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);
	}
}


2.圆形进度条,居中
public class ProgressWebView extends WebView {

	private ProgressBar progressbar;

	public ProgressWebView(Context context, AttributeSet attrs) {
		super(context, attrs);

		LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
				LinearLayout.LayoutParams.MATCH_PARENT,
				LinearLayout.LayoutParams.MATCH_PARENT);
		params.gravity = Gravity.CENTER;
		LinearLayout layout = new LinearLayout(context);
		layout.setLayoutParams(params);

		progressbar = new ProgressBar(context, null,
				android.R.attr.progressBarStyle);
		LinearLayout.LayoutParams params2 = new LinearLayout.LayoutParams(
				LinearLayout.LayoutParams.MATCH_PARENT,
				LinearLayout.LayoutParams.WRAP_CONTENT);
		params2.gravity = Gravity.CENTER;

		layout.addView(progressbar, params2);

		addView(layout);
		setWebChromeClient(new WebChromeClient());
	}

	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);
		}

	}

	@Override
	protected void onScrollChanged(int l, int t, int oldl, int oldt) {
		super.onScrollChanged(l, t, oldl, oldt);
	}
}
分享到:
评论

相关推荐

    Android自定义带进度条WebView仿微信加载过程

    主要为大家详细介绍了Android自定义带进度条WebView仿微信加载过程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    自定义Material风格的带进度条webView加载效果

    综上所述,"自定义Material风格的带进度条webView加载效果"涉及到Android自定义控件、事件监听、进度条控制、Material Design样式定制以及性能优化等多个方面。通过这个项目,开发者不仅可以提升应用的视觉效果,还...

    仿微信进度条webView

    "仿微信进度条webView"这个项目是针对WebView进行优化,为用户提供更友好的加载体验,尤其是在加载速度较慢或者网络环境不稳定的场景下,通过显示进度条让用户了解加载状态,增加用户体验的满意度。 首先,我们来...

    Adnroid 打造通用的带进度条的WebView

    1. **创建自定义进度条布局**:在XML布局文件中,添加一个ProgressBar和WebView,设置好相应的位置和样式。 2. **实现WebChromeClient**:在Activity或Fragment中,为WebView设置一个自定义的WebChromeClient,重写...

    简单齐全的webview与H5 交互 多中自定义进度条

    当WebView与H5进行交互时,可以实现更丰富的功能,比如自定义进度条。下面将详细讨论这个主题。 一、WebView介绍 WebView是Android和iOS等操作系统中提供的一个组件,它允许应用程序加载和显示网页内容。通过...

    带进度条的webview

    在Android开发中,Webview是一个非常重要的组件,它允许开发者在应用内嵌入网页内容,实现与网页的交互。...在实际开发中,还可以根据项目需求进行更细致的定制,比如自定义进度条样式、增加加载动画等。

    带进度条的X5WebView Demo

    为了解决这个问题,开发者们通常会进行一些封装,以实现一个带有进度条的Webview。本Demo就是针对这一需求,提供了一个名为"ProgressWebView"的封装实例。 "带进度条的X5WebView Demo"是一个基于腾讯X5内核的...

    带进度条的webView

    因此,“带进度条的webView”是一个解决方案,它通过显示进度条来指示网页加载状态,使得用户知道应用正在努力加载内容,避免了白屏带来的不友好感。 首先,我们需要理解WebView的基本用法。在Android中,WebView...

    android实现用户体验超棒的微信WebView进度条

    在Android开发中,为了提供优秀的用户体验,特别是在使用`WebView`加载网页时,微信的WebView进度条设计成为了一个值得学习的典范。本篇文章将探讨如何在Android应用中实现类似微信的WebView进度条,以提高用户感知...

    关于进度条与webview的用法

    这个是一个比较详细的关于自定义进度条与webview的使用方法,非常详细,详细到可以几乎复制粘贴就能用的地步

    Android webview带进度条,下拉刷新

    综上所述,"Android webview带进度条,下拉刷新"的实现涉及到WebView的使用、SwipeRefreshLayout的集成、自定义WebView以显示加载进度,以及事件监听和处理。这些技术点的组合使得开发者能够在原生应用中提供类似H5...

    ProgressBarWebView:带自定义渐变色进度条的WebView

    - **自定义View**:ProgressBarWebView通过继承Android原生的WebView并覆盖其相关方法,实现自定义进度条的绘制。它在`onDraw()`方法中使用Canvas进行图形绘制,通过渐变颜色填充条形区域,实现颜色变化的效果。 -...

    Android高级应用源码-自定义WebView,自带加载动画.rar

    1. 创建一个自定义的进度条或动画视图,比如CircleProgressView,用于显示加载进度。 2. 在WebView的`WebViewClient`中重写`onPageStarted`和`onPageFinished`方法,以便在页面开始加载时显示加载动画,在页面加载...

    android 带进度条的Demo

    总结,这个"android 带进度条的Demo"展示了如何在Android应用中集成一个自定义的WebView,同时通过ProgressBar实时反馈网页加载进度,提高了用户体验。开发者可以借鉴这个Demo,结合自己的项目需求,定制更丰富的...

    自定义WebView简单demo

    在这个项目中,我们自定义了一个WebView组件,它包含了三个核心特性:进度条显示、在同一WebView中处理多个链接以及支持页面的前进与后退功能。 首先,让我们详细了解一下进度条显示。原生的WebView在加载网页时...

    安卓仿微信webview进度条

    在安卓应用开发中,微信的Webview进度条是一种常见的用户界面元素,用于显示网页加载的进度。这个功能在用户体验上起到了积极的作用,因为它提供了一种视觉反馈,让用户知道网页正在加载,增强了用户的感知和交互性...

    Python-WebView顶部平滑进度条仿微信效果

    本项目“Python-WebView顶部平滑进度条仿微信效果”旨在实现一个与微信应用相似的顶部加载进度条,为用户提供更友好的浏览体验。这种平滑的加载效果可以增加应用程序的美观性和专业性,提升用户的交互感受。 在...

    android webview 顶部进度条+旋转等待dialog例子

    这个"android webview 顶部进度条+旋转等待dialog例子"就是一个实现这些功能的示例项目。 首先,我们来看顶部进度条。在Android中,我们可以利用WebView的内置方法`setWebChromeClient()`和自定义的`...

Global site tag (gtag.js) - Google Analytics