【移動應用開發(fā)技術】Android如何實現(xiàn)帶進度條的WebView_第1頁
【移動應用開發(fā)技術】Android如何實現(xiàn)帶進度條的WebView_第2頁
【移動應用開發(fā)技術】Android如何實現(xiàn)帶進度條的WebView_第3頁
【移動應用開發(fā)技術】Android如何實現(xiàn)帶進度條的WebView_第4頁
【移動應用開發(fā)技術】Android如何實現(xiàn)帶進度條的WebView_第5頁
免費預覽已結束,剩余2頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

【移動應用開發(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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論