編輯:關於Android編程
WebView(網絡視圖)能加載顯示網頁,可以將其視為一個浏覽器。
它使用了WebKit渲染引擎加載顯示網頁,實現WebView有以下兩種不同的方法:
第一種方法的步驟:
1.在要Activity中實例化WebView組件:WebView webView = new WebView(this);
2.調用WebView的loadUrl()方法,設置WevView要顯示的網頁:
互聯網用:webView.loadUrl("http://www.google.com");
本地文件用:webView.loadUrl("file:///android_asset/XX.html");
本地文件存放在:assets 文件中
3.調用Activity的setContentView( )方法來顯示網頁視圖
4.用WebView點鏈接看了很多頁以後為了讓WebView支持回退功能,
需要覆蓋覆蓋Activity類的onKeyDown()方法,
如果不做任何處理,點擊系統回退剪鍵,整個浏覽器會調用finish()而結束自身,而不是回退到上一頁面
5.需要在AndroidManifest.xml文件中添加權限,否則會出現Web page not available錯誤。
第二種方法的步驟:
1、在布局文件中聲明WebView
2、在Activity中實例化WebView
3、調用WebView的loadUrl( )方法,設置WevView要顯示的網頁
4、為了讓WebView能夠響應超鏈接功能,調用setWebViewClient( )方法,設置 WebView視圖
5、用WebView點鏈接看了很多頁以後為了讓WebView支持回退功能,
需要覆蓋覆蓋Activity類的onKeyDown()方法,如果不做任何處理,
點擊系統回退剪鍵,整個浏覽器會調用finish()而結束自身,而不是回退到上一頁面
6、需要在AndroidManifest.xml文件中添加權限,否則出現Web page not available錯誤。
浏覽器控件是每個開發環境都具備的,windows的有webBrowser,
android和ios都有webView。只是其引擎不同,相對於微軟的webBrowser,
android及ios的webview的引擎都是webkit,對Html5提供支持。
本篇主要介紹android的webview之強大。
A. webview組件如何使用
1) 添加權限:AndroidManifest.xml中必須使用許可"android.permission.INTERNET",
否則會出Web page not available錯誤。
2) 在要Activity中生成一個WebView組件:
WebView webView = new WebView(this);
或者可以在activity的layout文件裡添加webview控件:
3) 設置WebView基本信息:
如果訪問的頁面中有Javascript,則webview必須設置支持Javascript。
webview.getSettings().setJavaScriptEnabled(true);
觸摸焦點起作用
requestFocus();
取消滾動條
this.setScrollBarStyle(SCROLLBARS_OUTSIDE_OVERLAY);
4) 設置WevView要顯示的網頁:
互聯網用:webView.loadUrl("http://www.google.com");
本地文件用:webView.loadUrl("file:///android_asset/XX.html");
本地文件存放在:assets文件中
5) 如果希望點擊鏈接由自己處理,而不是新開Android的系統browser中響應該鏈接。
給WebView添加一個事件監聽對象(WebViewClient)並重寫其中的一些方法:
shouldOverrideUrlLoading:對網頁中超鏈接按鈕的響應。
當按下某個連接時WebViewClient會調用這個方法,
並傳遞參數:按下的url。比如當webview內嵌網頁的某個數字被點擊時,
它會自動認為這是一個電話請求,會傳遞url:tel:123,
如果你不希望如此可通過重寫shouldOverrideUrlLoading函數解決:
另外還有其他一些可重寫的方法
1,接收到Http請求的事件
onReceivedHttpAuthRequest(WebView view, HttpAuthHandler handler,
String host, String realm)
2,打開鏈接前的事件
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url); return true; }
這個函數我們可以做很多操作,比如我們讀取到某些特殊的URL,於是就可以不打開地址,取消這個操作,
進行預先定義的其他操作,這對一個程序是非常必要的。
3,載入頁面完成的事件
public void onPageFinished(WebView view, String url){ }
同樣道理,我們知道一個頁面載入完成,於是我們可以關閉loading條,切換程序動作。
4,載入頁面開始的事件
public void onPageStarted(WebView view, String url, Bitmap favicon) { }
這個事件就是開始載入頁面調用的,通常我們可以在這設定一個loading的頁面,告訴用戶程序在等待網絡響應。
通過這幾個事件,我們可以很輕松的控制程序操作,一邊用著浏覽器顯示內容,
一邊監控著用戶操作實現我們需要的各種顯示方式,同時可以防止用戶產生誤操作。
6) 如果用webview點鏈接看了很多頁以後,如果不做任何處理,點擊系統“Back”鍵,
整個浏覽器會調用finish()而結束自身,如果希望浏覽的網頁回退而不是退出浏覽器,
需要在當前Activity中處理並消費掉該Back事件。
覆蓋Activity類的onKeyDown(int keyCoder,KeyEvent event)方法。
B. Webview與js交互
Webview與js的雙向交互才是android的webview強大所在
首先,webview可以定義一個在其內嵌頁面中可以觸發的事件
全屏代碼
1、在AndroidManifest.xml的配置文件裡面的
如何讓 Galaxy S7 同時支持雙 SIM 卡和存儲卡
Galaxy S7 俨然已經成為目前最受關注的智能手機之一,許多人還將其稱作是目前最佳的智能手機。三星在這部手機身上帶回了對於 microSD 卡的支持,但
Android5.0+ CollapsingToolbarLayout使用詳解
CollapsingToolbarLayout作用是提供了一個可以折疊的Toolbar,它繼承至FrameLayout,給它設置layout_scrollFlags,它可
Android中BroadCast與Activity之間的通信
在看本文之前,如果你對於Android的廣播機制不是很了解,建議先行閱讀我轉載的一篇博文:圖解 Android 廣播機制。 由於本案例比較簡單,故直接在此貼出代碼,不做
Android應用中炫酷的橫向和環形進度條的實例分享
一、概述最近需要用進度條,秉著不重復造輪子的原則,上github上搜索了一番,看了幾個覺得比較好看的ProgressBar,比如:daimajia的等。簡單看了下代碼,基