Android 带进度条的WebView 示例代码
程序员文章站
2024-03-06 09:35:49
前言
如果不使用系统自带的titlebar(即activity被设置@android:style/theme.notitlebar),那就需要自己来写进度条...
前言
如果不使用系统自带的titlebar(即activity被设置@android:style/theme.notitlebar),那就需要自己来写进度条了,这里封装了一个自定义控件和加载网页的公共activity,方便使用。
正文
一、截图
二、自定义控件
复制代码 /** * 带进度条的webview * http://www.cnblogs.com/over140/archive/2013/03/07/2947721.html * */ @suppresswarnings("deprecation") 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.fill_parent, 3, 0, 0)); addview(progressbar); // setwebviewclient(new webviewclient(){}); 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); } } 复制代码
三、加载网页的公共activity
public class webactivity extends baseactivity { private progresswebview webview; private string url; private string name; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.commom_web); // ~~~ 获取参数 url = getintent().getstringextra("url"); name = getintent().getstringextra("name"); // ~~~ 绑定控件 webview = (progresswebview) findviewbyid(r.id.webview); // ~~~ 设置数据 titletext.settext(name); webview.getsettings().setjavascriptenabled(true); webview.setdownloadlistener(new downloadlistener() { @override public void ondownloadstart(string url, string useragent, string contentdisposition, string mimetype, long contentlength) { if (url != null && url.startswith("http://")) startactivity(new intent(intent.action_view, uri.parse(url))); } }); webview.loadurl(url); } }
commom_web.xml
<?xml version="1.0" encoding="utf-8"?> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <include layout="@layout/include_title" /> <com.nmbb.ui.widget.progresswebview android:id="@+id/webview" android:layout_width="fill_parent" android:layout_height="fill_parent" /> </linearlayout>
四、补充说明
1、还可以再优化一下,在标题栏加一个刷新按钮。
2、如果加载的页面有需要下载文件,需要设置setdownloadlistener方法,根据项目实际需求定制。
3、自定义控件是在转载的,忘记出处,感谢~~
本文就是对android webview 带进度条的实例,有需要的可以参考下。
上一篇: Java基于正则实现的日期校验功能示例
下一篇: c#中两种不同的存储过程调用与比较