android点赞webview页面,Android WebView
一、簡介
WebView是Android系統(tǒng)中的原生控件,其主要功能與前端頁面進行響應(yīng)交互,快捷省時地實現(xiàn)如期的功能,相當于增強版的內(nèi)置瀏覽器。
使用時需要在配置文件里設(shè)置網(wǎng)絡(luò)權(quán)限,定義布局大小和樣式,綁定和操作控件。
manifest.xml
activity_main.xml
android:id="@+id/web_view"
android:layout_width="match_parent"
android:layout_height="match_parent">
MainActivity.java
String url = "https://www.baidu.com";
WebView webView = (WebView) findViewById(R.id.web_view);
webView.loadUrl(url);
網(wǎng)頁跳轉(zhuǎn),包括前進、后退、自定義。
boolean back = webview.canGoBack(); -> 判斷網(wǎng)頁是否可以回退
webview.goBack(); -> 回退一頁
boolean forward = webview.canGoForward(); -> 判斷網(wǎng)頁是否可以前進
webview.goForward(); -> 前進一頁
webview.goBackOrForward(1); -> 正數(shù)為前進
webview.goBackOrForward(-1); -> 負數(shù)為后退
二、生命周期
onResume():活躍狀態(tài),可以正常執(zhí)行網(wǎng)頁的響應(yīng)。
onPause():暫停狀態(tài),頁面被失去焦點,暫停所有進行中的動作,如:DOM解析、CSS和JavaScript執(zhí)行等。
pauseTimers():全局WebView暫停狀態(tài),如:layout、parsing、javascripttimer等。
resumeTimers():恢復到pauseTimers()執(zhí)行前的狀態(tài)。
destroy():銷毀狀態(tài),釋放資源。
注意:使用WebView不當容易引起內(nèi)存泄漏,所以WebView的生命周期方法應(yīng)跟隨Activity的生命周期的方法來調(diào)用。
三、 WebSettings
控件的相關(guān)配置
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true); -> 是否開啟JS支持
webSettings.setPluginsEnabled(true); -> 是否開啟插件支持
webSettings.setJavaScriptCanOpenWindowsAutomatically(true); -> 是否允許JS打開新窗口
webSettings.setUseWideViewPort(true); -> 縮放至屏幕大小
webSettings.setLoadWithOverviewMode(true); -> 縮放至屏幕大小
webSettings.setSupportZoom(true); -> 是否支持縮放
webSettings.setBuiltInZoomControls(true); -> 是否支持縮放變焦,前提是支持縮放
webSettings.setDisplayZoomControls(false); -> 是否隱藏縮放控件
webSettings.setAllowFileAccess(true); -> 是否允許訪問文件
webSettings.setDomStorageEnabled(true); -> 是否節(jié)點緩存
webSettings.setDatabaseEnabled(true); -> 是否數(shù)據(jù)緩存
webSettings.setAppCacheEnabled(true); -> 是否應(yīng)用緩存
webSettings.setAppCachePath(uri); -> 設(shè)置緩存路徑
webSettings.setMediaPlaybackRequiresUserGesture(false); -> 是否要手勢觸發(fā)媒體
webSettings.setStandardFontFamily("sans-serif"); -> 設(shè)置字體庫格式
webSettings.setFixedFontFamily("monospace"); -> 設(shè)置字體庫格式
webSettings.setSansSerifFontFamily("sans-serif"); -> 設(shè)置字體庫格式
webSettings.setSerifFontFamily("sans-serif"); -> 設(shè)置字體庫格式
webSettings.setCursiveFontFamily("cursive"); -> 設(shè)置字體庫格式
webSettings.setFantasyFontFamily("fantasy"); -> 設(shè)置字體庫格式
webSettings.setTextZoom(100); -> 設(shè)置文本縮放的百分比
webSettings.setMinimumFontSize(8); -> 設(shè)置文本字體的最小值(1~72)
webSettings.setDefaultFontSize(16); -> 設(shè)置文本字體默認的大小
webSettings.setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN); -> 按規(guī)則重新布局
webSettings.setLoadsImagesAutomatically(false); -> 是否自動加載圖片
webSettings.setDefaultTextEncodingName("UTF-8"); -> 設(shè)置編碼格式
webSettings.setNeedInitialFocus(true); -> 是否需要獲取焦點
webSettings.setGeolocationEnabled(false); -> 設(shè)置開啟定位功能
webSettings.setBlockNetworkLoads(false); -> 是否從網(wǎng)絡(luò)獲取資源
四、WebViewClient
控件客戶端,用于處理各種通知和請求事件。
onPageStarted():頁面開始加載時調(diào)用,這時候可以顯示加載進度條,讓用戶耐心等待頁面的加載。
onPageFinished():頁面完成加載時調(diào)用,這時候可以隱藏加載進度條,提醒用戶頁面已經(jīng)完成加載。
onLoadResource():頁面每次加載資源時調(diào)用。
shouldOverrideUrlLoading():WebView加載url默認會調(diào)用系統(tǒng)的瀏覽器,通過重寫該方法,實現(xiàn)在當前應(yīng)用內(nèi)完成頁面加載。
onReceivedError():頁面加載發(fā)生錯誤時調(diào)用,這時候可以跳轉(zhuǎn)到自定義的錯誤提醒頁面,總比系統(tǒng)默認的錯誤頁面美觀,優(yōu)化用戶體驗。
onReceivedHttpError():頁面加載請求時發(fā)生錯誤。
onReceivedSslError():頁面加載資源時發(fā)生錯誤。
shouldOverrideKeyEvent():覆蓋按鍵默認的響應(yīng)事件,這時候可以根據(jù)自身的需求在點擊某些按鍵時加入相應(yīng)的邏輯。
onScaleChanged():頁面的縮放比例發(fā)生變化時調(diào)用,這時候可以根據(jù)當前的縮放比例來重新調(diào)整WebView中顯示的內(nèi)容,如修改字體大小、圖片大小等。
shouldInterceptRequest():可以根據(jù)請求攜帶的內(nèi)容來判斷是否需要攔截請求。
WebViewClient webViewClient = new WebViewClient(){
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
}
@Override
public void onPageFinished(WebView view, String url) {
}
@Override
public boolean onLoadResource(WebView view, String url) {
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true; -> 消費事件終止傳遞
}
@Override
public void onReceivedError(WebView view, int errorCode,
String description, String failingUrl){
view.loadUrl("file:///android_assets/error.html"); -> assets目錄下放置文件
}
webView.setWebViewClient(webViewClient);
五、WebChromeClient
瀏覽器客戶端,用于處理網(wǎng)站圖標、網(wǎng)站標題、網(wǎng)站彈窗等。
onProgressChanged():頁面加載進度發(fā)生變化時調(diào)用,可以通過該方法實時向用戶反饋加載情況,如顯示進度條等。
onReceivedIcon():接收Web頁面的圖標,可以通過該方法把圖標設(shè)置在原生的控件上,如Toolbar等。
onReceivedTitle():接收Web頁面的標題,可以通過該方法把圖標設(shè)置在原生的控件上,如Toolbar等。
onJsAlert():處理JS的Alert對話框。
onJsPrompt():處理JS的Prompt對話框。
onJsConfirm():處理JS的Confirm對話框。
onPermissionRequest():Web頁面請求Android權(quán)限時調(diào)用。
onPermissionRequestCanceled():Web頁面請求Android權(quán)限被取消時調(diào)用。
onShowFileChooser():Web頁面上傳文件時調(diào)用。
getVideoLoadingProgressView():自定義媒體文件播放加載時的進度條。
getDefaultVideoPoster():設(shè)置媒體文件默認的預覽圖。
onShowCustomView():媒體文件進入全屏時調(diào)用。
onHideCustomView():媒體文件退出全屏時調(diào)用。
WebChromeClient webChromeClient = new WebChromeClient();
六、Android調(diào)用JS
語法:webView.loadUrl("javascript:method()");
在Web頁面中定義兩個Js方法,分別是有返回值和無返回值。
let name = '';
function setter(name){
this.name = name;
}
function getter(){
return this.name;
}
在Android中通過WebView調(diào)用Js方法
String setter = "javascript:setter('"+"wjx"+"');";
webView.loadUrl(setter); -> 調(diào)用有參無返回值的函數(shù)
webView.evaluateJavascript("getter()", new ValueCallback() {
@Override
public void onReceiveValue(String s) { -> 調(diào)用無參有返回值的函數(shù)
System.out.println("my name is "+s);
}
});
七、Js調(diào)用Android
webView.addJavascriptInterface(this, "bridge"); -> 建立通訊橋梁
webView.removeJavascriptInterface("bridge"); -> 移除通訊橋梁
在Android中定義一個方法,標記為Js接口
@JavascriptInterface
public void toast(String toast){
Toast.makeText(MainActivity.this, toast, Toast.LENGTH_SHORT).show();
}
在Web頁面中調(diào)用Android方法
function toast(toast){
javascript:bridge.toast(toast); -> 通過橋梁調(diào)用方法
window.bridge.toast(toast); -> 通過橋梁調(diào)用方法
}
總結(jié)
以上是生活随笔為你收集整理的android点赞webview页面,Android WebView的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android 地图相册,时光地图相册
- 下一篇: android ip地址扫描,Andro