Android中WebView的一些簡單用法
Android中WebView的一些簡單用法
一直想寫一個關(guān)于 WebView 控件的 一些簡單運(yùn)用,都沒什么時間,這次也是擠出時間寫的,里面的一些基礎(chǔ)知識就等有時間再更新講解一下,今天就先把項(xiàng)目出來做一些簡單介紹,過多的內(nèi)容可以看我的源碼,都傳到github上了。
下面是項(xiàng)目的效果圖:




應(yīng)用用到的是 MVP 設(shè)計(jì)模式,對這種模式還不太了解的可以先自行g(shù)oogle一下,不然項(xiàng)目估計(jì)會看的暈,雖然我的代碼都很簡潔的。
對于MVP 可以帶著一個思路看源碼,那就是 activity(或其他組件)通過 xxPresenter 去拿數(shù)據(jù),拿到數(shù)據(jù) 在 xxPresenter 再利用 xxIView(這是一個接口)更新數(shù)據(jù),那么activity(或其他組件)繼承 xxIView 這個接口 就可以 更新UI 了
其實(shí) WebView 只用到一些簡單的,深入應(yīng)用本篇文章會在更新!
其中:
//設(shè)置WebView的一些縮放功能點(diǎn)
webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
webView.setHorizontalScrollBarEnabled(false);
webView.getSettings().setSupportZoom(true);
//設(shè)置WebView可觸摸放大縮小
webView.getSettings().setBuiltInZoomControls(true);
webView.setInitialScale(70);
webView.setHorizontalScrollbarOverlay(true);
//WebView雙擊變大,再雙擊后變小,當(dāng)手動放大后,雙擊可以恢復(fù)到原始大小
//webView.getSettings().setUseWideViewPort(true);
//提高渲染的優(yōu)先級
webView.getSettings().setRenderPriority(RenderPriority.HIGH);
//允許JS執(zhí)行
webView.getSettings().setJavaScriptEnabled(true);
//把圖片加載放在最后來加載渲染
//webView.getSettings().setBlockNetworkImage(true);
//用WebView將字符串以HTML的形式顯示出來
//webView.loadDataWithBaseURL("fake://not/needed", <p>zzz</p>, "text/html", "utf-8", "");
//在同種分辨率的情況下,屏幕密度不一樣的情況下,自動適配頁面:
與 native 進(jìn)行交互:
mWebView.addJavascriptInterface(new WebAppInterface(customView.getContext()),"Android");
public class WebAppInterface {
Context mContext;
/** Instantiate the interface and set the context */
WebAppInterface(Context c) {
mContext = c;
}
/** Show a toast from the web page */
@JavascriptInterface
public void showToast(String toast) {
// 比如點(diǎn)擊 webview加載的html 片段 可以 讓應(yīng)用彈出一個土司
}
這里給 webview 設(shè)置 夜間模式:
也就往 html 頁面寫入 html 標(biāo)簽 "<div class="night">"
public static String buildHtmlWithCss(String html, String[] cssUrls, boolean isNightMode) {
StringBuilder result = new StringBuilder();
for (String cssUrl : cssUrls) {
result.append(String.format(CSS_LINK_PATTERN, cssUrl));
}
if (isNightMode) {
result.append(NIGHT_DIV_TAG_START);
}
result.append(html.replace(DIV_IMAGE_PLACE_HOLDER, DIV_IMAGE_PLACE_HOLDER_IGNORED));
if (isNightMode) {
result.append(NIGHT_DIV_TAG_END);
}
return result.toString();
}
項(xiàng)目還得有待改進(jìn),等這段時間忙完就跟新!?。。?br />
項(xiàng)目源碼 github
相關(guān)文章
Android 3.0引入的異步加載機(jī)制Loader
Loader裝載器從android3.0開始引進(jìn)。它使得在activity或fragment中異步加載數(shù)據(jù)變得簡單。下面我們就來詳細(xì)講解下2017-12-12
基于Android實(shí)現(xiàn)保存圖片到本地并可以在相冊中顯示出來
App應(yīng)用越來越人性化,不僅界面優(yōu)美而且服務(wù)也很多樣化,操作也非常方便。通過本篇文章給大家介紹基于Android實(shí)現(xiàn)保存圖片到本地并可以在相冊中顯示出來,對android保存圖片相關(guān)知識感興趣的朋友一起學(xué)習(xí)吧2015-12-12
Android自定義水波紋底部導(dǎo)航的實(shí)現(xiàn)
TabLayout作為導(dǎo)航組件來說,使用場景非常的多,也意味著要滿足各種各樣的需求,這篇文章主要介紹了Android自定義水波紋底部導(dǎo)航的實(shí)現(xiàn)2022-08-08
Android實(shí)現(xiàn)360手機(jī)助手底部的動畫菜單
這篇文章給大家分享了利用Android實(shí)現(xiàn)360手機(jī)助手底部的動畫菜單效果,文中給出了實(shí)例代碼,這樣對大家的學(xué)習(xí)或者理解更有幫助,有需要的朋友們下面來一起看看吧。2016-10-10
Android中對RecyclerView Adapter封裝解析
本篇文章主要介紹了Android中對RecyclerView Adapter封裝解析。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-06-06
詳解Android中Application設(shè)置全局變量以及傳值
這篇文章主要介紹了詳解Android中Application設(shè)置全局變量以及傳值的相關(guān)資料,希望通過本文大家能夠理解掌握這部分內(nèi)容,需要的朋友可以參考下2017-09-09

