如果不使用系統自帶的titlebar(即activity被設定@android:style/theme.notitlebar),那就需要自己來寫進度條了,這裡封裝了一個自定義控件和加載網頁的公共activity,友善使用。
聲明
歡迎轉載,但請保留文章原始出處:)
部落格園:http://www.cnblogs.com
農民伯伯: http://over140.cnblogs.com
正文
一、截圖
二、自定義控件
複制代碼
/**
* 帶進度條的webview
* @author 農民伯伯
* @see 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
* 加載網頁的activity
public class webactivity extends baseactivity {
private progresswebview webview;
private string url;
private string name;
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、自定義控件是在轉載的,忘記出處,感謝~~