306
技術社區[雲棲]
android WebView 瀏覽曆史管理前進和後退

通過設置WebViewClient,可以設置在網頁開始下載和下載完畢後要做的操作。如在下載時進度條和下載時標題顯示文字可以在這設置,下載後設置title為網頁標題也要在這設置。開戶前進後退等功能也要在這設置。
下麵的程序中前進後退等按鈕的可用屬性是和WebVeiw可否前進後退是同步的。同時Activity兼具事件監聽器的功能。
package com.iteedu.webview;
import android.app.Activity;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnKeyListener;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.widget.EditText;
public class WebViewExample extends Activity
implements OnClickListener, OnKeyListener {
//設定WebViewClient的處理程序
class MyWebViewClient extends WebViewClient {
@Override
public void doUpdateVisitedHistory(WebView view, String url, boolean isReload) {
back.setEnabled(webView.canGoBack());
forward.setEnabled(webView.canGoForward());
}
@Override
public void onPageFinished(WebView view, String url) {
//設置程序的標題為網頁的標題
if (webView.getTitle() != null) {
WebViewExample.this.setTitle(webView.getTitle());
}
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
WebViewExample.this.setTitle("Loading...");
back.setEnabled(webView.canGoBack());
forward.setEnabled(webView.canGoForward());
}
}
Button back;
Button forward;
Button first;
Button last;
Button clear;
EditText url;
WebView webView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.example03);
//建立顯示畫麵上Button,EditText,WebView類的實例變量
first = (Button)findViewById(R.id.Button01);
back = (Button)findViewById(R.id.Button02);
forward = (Button)findViewById(R.id.Button03);
last = (Button)findViewById(R.id.Button04);
clear = (Button)findViewById(R.id.Button05);
url = (EditText)findViewById(R.id.EditText01);
webView = (WebView)findViewById(R.id.WebView01);
webView.setWebViewClient(new MyWebViewClient());
//設定Button和EditText的監聽功能
back.setOnClickListener(this);
forward.setOnClickListener(this);
first.setOnClickListener(this);
last.setOnClickListener(this);
clear.setOnClickListener(this);
url.setOnKeyListener(this);
}
//按下Button時的處理程序
public void onClick(View v) {
if (v == back) {
if (webView.canGoBack()){
webView.goBack();
}
} else if (v == forward) {
if (webView.canGoForward()){
webView.goForward();
}
} else if (v == first) {
if (webView.canGoBackOrForward(-2)){
webView.goBackOrForward(-2);
}
} else if (v == last) {
if (webView.canGoBackOrForward(+2)){
webView.goBackOrForward(+2);
}
} else if (v == clear) {
webView.clearHistory();
}
}
//於url(EditText)編輯框按下ENTER時的處理程序,下載新的網頁
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_ENTER) {
webView.loadUrl(url.getText().toString());
return true;
}
return false;
}
}
xml:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout android: android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:andro android:orientation="vertical"> <LinearLayout android: android:layout_height="wrap_content" android:layout_width="fill_parent"> <Button android: android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="<<" /> <Button android: android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="<" /> <Button android: android:layout_width="wrap_content" android:layout_height="wrap_content" android:text=">"></Button> <Button android: android:layout_width="wrap_content" android:layout_height="wrap_content" android:text=">>"></Button> <Button android: android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Clear History"></Button> </LinearLayout> <EditText android: android:layout_height="wrap_content" android:text="https://" android:layout_width="fill_parent" android:maxLines="1" /> <WebView android: android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>
最後更新:2017-04-02 16:48:06