




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
【移動應用開發(fā)技術】Android如何實現(xiàn)帶進度條的WebView
這篇文章將為大家詳細講解有關Android如何實現(xiàn)帶進度條的WebView,在下覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。Android實現(xiàn)帶進度條的WebView的實例1.WebView加載網頁方法//加載本地資源
loadUrl("file:///android_asset/example.html");
//加載網絡資源
loadUrl("");2.帶進度的Drawable文件view_progress_webview<?xml
version="1.0"
encoding="utf-8"?>
<layer-list
xmlns:android="/apk/res/android">
<item
android:id="@android:id/progress">
<clip>
<shape>
<solid
android:color="#31CE15"/>
<corners
android:radius="2dp"/>
</shape>
</clip>
</item>
</layer-list>顏色值為進度顏色,根據(jù)需要更換3.ProgressWebView類/**
*
帶進度條的WebView
*
@Author
GQ
*/
public
class
ProgressWebView
extends
WebView
{
private
ProgressBar
progressbar;
private
Context
mContext;
public
ProgressWebView(Context
context,
AttributeSet
attrs)
{
super(context,
attrs);
this.mContext
=
context;
progressbar
=
new
ProgressBar(context,
null,
android.R.gressBarStyleHorizontal);
progressbar.setLayoutParams(new
LayoutParams(LayoutParams.FILL_PARENT,
5,
0,
0));
Drawable
drawable
=
context.getResources().getDrawable(R.drawable.view_progress_webview);
progressbar.setProgressDrawable(drawable);
addView(progressbar);
//主要處理解析,渲染網頁等瀏覽器做的事情
setWebViewClient(new
WebViewClient()
{
@Override
public
void
onReceivedError(WebView
view,
int
errorCode,
String
description,
String
failingUrl)
{
super.onReceivedError(view,
errorCode,
description,
failingUrl);
//加載失敗時候,顯示自定義的頁面
if
(errorListener
!=
null)
{
errorListener.onError();
}
}
});
//輔助WebView處理Javascript的對話框,網站圖標,網站title,加載進度等
setWebChromeClient(new
WebChromeClient());
getSettings().setSupportZoom(true);//是否可以縮放
getSettings().setBuiltInZoomControls(true);
getSettings().setJavaScriptEnabled(true);//支持JS
getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);
getSettings().setUseWideViewPort(true);
getSettings().setLoadWithOverviewMode(true);
getSettings().setSaveFormData(true);
getSettings().setDomStorageEnabled(true);
//優(yōu)先使用緩存
getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
//禁用長按
setOnLongClickListener(new
OnLongClickListener()
{
@Override
public
boolean
onLongClick(View
view)
{
return
true;
}
});
//如果在瀏覽器下載,調用瀏覽器默認下載+通知欄
setDownloadListener(new
DownloadListener()
{
@Override
public
void
onDownloadStart(String
url,
String
userAgent,
String
contentDisposition,
String
mimetype,
long
contentLength)
{
Uri
uri
=
Uri.parse(url);
Intent
intent
=
new
Intent(Intent.ACTION_VIEW,
uri);
mContext.startActivity(intent);
}
});
}
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
public
void
onReceivedTitle(WebView
view,
String
title)
{
super.onReceivedTitle(view,
title);
if
(titleListener
!=
null)
titleListener.getTitle(title);
}
}
@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);
}
private
TitleListener
titleListener;
public
interface
TitleListener
{
void
getTitle(String
title);
}
public
void
setOnTitleListener(TitleListener
titleListener)
{
this.titleListener
=
titleListener;
}
private
ErrorListener
errorListener;
public
interface
ErrorListener
{
void
onError();
}
public
void
setOnErrorListener(ErrorListener
errorListener)
{
this.errorListener
=
errorListener;
}
}4.使用/**
*
公共WebView
*/
public
class
BasicWebActivity
extends
Activity
{
protected
ProgressWebView
progressWebView;
private
TextView
title;//標題欄
private
TextView
tv_none;//加載失敗顯示文字
@Override
protected
void
onCreate(Bundle
savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.mon_webview);
title
=
(TextView)
findViewById(R.id.title);
tv_none
=
(TextView)
findViewById(R.id.tv_none);
progressWebView
=
(ProgressWebView)
findViewById(R.gressWebView);
String
url
=
getIntent().getStringExtra("url");
progressWebView.setOnTitleListener(new
ProgressWebView.TitleListener()
{
@Override
public
void
getTitle(String
title)
{
title.setText(title);
}
});
progressWebView.setOnErrorListener(new
ProgressWebView.ErrorListener()
{
@Override
public
void
onError()
{
tv_none.setText("url資源失效");
}
});
//加載網頁
progressWebView.loadUrl(url);
}
//重寫返回鍵
@Override
public
boolean
onKeyDown(int
keyCode,
KeyEvent
event)
{
if
(keyCode
==
KeyEvent.KEYCODE_BACK)
{
if
(progressWebView.canGoBack())
{
progressWebView.goBack();//返回上一層頁面
return
true;
}
else
{
finish();//關閉頁面
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 買賣桌子合同范例
- 臨期倉儲采購合同范例
- 青島版四年級下冊數(shù)學試卷三套
- 東營油庫遷建合同范例
- 遼寧省點石聯(lián)考2024-2025學年高一上學期期末考試物理試卷(解析版)
- 三層瓦楞紙箱訂購合同范例
- 做商務合同范例
- 農房租房合同范例
- 農業(yè)勞務分包合同范例
- 佳利租賃合同范本
- 高風險作業(yè)培訓課件
- 試驗檢測單位安全培訓課件
- 2024年安徽省C20教育聯(lián)盟中考一模道德與法治試卷(含答案)
- 公路瀝青路面設計標準規(guī)范
- 急性腎小球腎炎的護理PPT文檔
- 印刷業(yè)數(shù)字化轉型
- 加油站春季安全教育培訓
- 高壓隔膜壓濾機安裝方案
- 外加劑摻合料試題帶答案
- 燃燒機型式檢驗報告
- 老年認知功能障礙及其照料課件
評論
0/150
提交評論