




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
【移動應(yīng)用開發(fā)技術(shù)】Android如何實現(xiàn)帶進(jìn)度條的WebView
這篇文章將為大家詳細(xì)講解有關(guān)Android如何實現(xiàn)帶進(jìn)度條的WebView,在下覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。Android實現(xiàn)帶進(jìn)度條的WebView的實例1.WebView加載網(wǎng)頁方法//加載本地資源
loadUrl("file:///android_asset/example.html");
//加載網(wǎng)絡(luò)資源
loadUrl("");2.帶進(jìn)度的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ìn)度顏色,根據(jù)需要更換3.ProgressWebView類/**
*
帶進(jìn)度條的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);
//主要處理解析,渲染網(wǎng)頁等瀏覽器做的事情
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的對話框,網(wǎng)站圖標(biāo),網(wǎng)站title,加載進(jìn)度等
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;
}
});
//如果在瀏覽器下載,調(diào)用瀏覽器默認(rèn)下載+通知欄
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;//標(biāo)題欄
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資源失效");
}
});
//加載網(wǎng)頁
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();//關(guān)閉頁面
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 安全生產(chǎn)工作要點概述
- 智能財稅綜合實訓(xùn) 下篇 課件 智能財稅基礎(chǔ)業(yè)務(wù)5 社會共享中級外包實務(wù)
- 2025年黨政領(lǐng)導(dǎo)干部黨章黨規(guī)黨紀(jì)黨史知識培訓(xùn)考試題庫及答案(共230題)
- 2025年度商標(biāo)權(quán)轉(zhuǎn)讓款代付服務(wù)協(xié)議
- 上市公司資金管理存款居間
- 實驗動物房裝修合同解除
- 無縫物流操作指南文件匯編
- 電子商務(wù)平臺客戶服務(wù)提升預(yù)案
- 塔式起重機(jī)安裝專項施工方案內(nèi)容
- 有機(jī)蔬菜種植要求
- 2023年寧夏回族自治區(qū)中考地理真題(原卷版)
- 2025年安全員C證考試題庫及答案-
- 2025年全球及中國電子雷管芯片模組行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 小腸扭轉(zhuǎn)病人護(hù)理查房
- 第二十屆中央紀(jì)律檢查委員會第四次全體會議公報學(xué)習(xí)解讀
- 2025年國家財政部部屬單位招聘47人歷年高頻重點提升(共500題)附帶答案詳解
- 幼兒園歌唱活動基本流程
- 機(jī)場航站樓高空保潔服務(wù)方案
- 醫(yī)用氣體安全培訓(xùn)
- 信息系統(tǒng)應(yīng)急響應(yīng)計劃制定指南考核試卷
- 人類同種異體組織市場發(fā)展預(yù)測和趨勢分析
評論
0/150
提交評論