在微信里看文章,文章都是網(wǎng)頁,但長按圖片后會(huì)彈出一個(gè)對(duì)話框讓用戶選擇要進(jìn)行的操作,這個(gè)操作我想很多人都很熟悉,那天筆者竟突然覺得有些神奇,難道說WebView有相應(yīng)的API可以對(duì)頁面上的資源類型進(jìn)行區(qū)分嗎?查了一下資料后發(fā)現(xiàn)確實(shí)如此,特此記錄一下:
//長按處理各種類型的事件
mWebView.setOnLongClickListener(new OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
WebView.HitTestResult result = mWebView.getHitTestResult();
if (null == result)
return false;
int type = result.getType();
switch (type) {
case WebView.HitTestResult.EDIT_TEXT_TYPE: // 選中的文字類型
break;
case WebView.HitTestResult.PHONE_TYPE: // 處理撥號(hào)
break;
case WebView.HitTestResult.EMAIL_TYPE: // 處理Email
break;
case WebView.HitTestResult.GEO_TYPE: // 地圖類型
break;
case WebView.HitTestResult.SRC_ANCHOR_TYPE: // 超鏈接
break;
case WebView.HitTestResult.SRC_IMAGE_ANCHOR_TYPE: // 帶有鏈接的圖片類型
case WebView.HitTestResult.IMAGE_TYPE: // 處理長按圖片的菜單項(xiàng)
String url = result.getExtra();
if (url != null && URLUtil.isValidUrl(url)) {
//彈框
}
return true;
case WebView.HitTestResult.UNKNOWN_TYPE: //未知
break;
}
return false;
}
});
基于這個(gè)東東,我們可以對(duì)網(wǎng)頁不同的資源進(jìn)行不同的處理操作,只要你封裝得好,你可以打造一個(gè)功能齊全的WebView,當(dāng)然,建議使用騰訊X5內(nèi)核替換系統(tǒng)自帶的WebView!