云炬Android开发笔记 12基于WebView的混合App框架设计(包含浏览器与原生请求Cookie的处理)
閱讀目錄
1.WebView高可擴展性封裝
1.1 發(fā)現(xiàn)模塊的框架搭建
1.2 webView的基類
1.3 對webview基類的實現(xiàn)
1.4 setInitializer的方法的實現(xiàn)
1.5 webView內(nèi)部的處理和控制
1.6 對初始化方法的調(diào)用
1.7 測試
?1.8 增加頁面間的跳轉(zhuǎn)
2.Web與原生交互一鍵式配置解決方案
2.1 展現(xiàn)原有的web頁面的樣式
?2.2 事件的綁定
2.3事件綁定的測試
2.4 使用原生處理web
3. 將混合微框架集成到latte并完善
3.1 js接口的增加
3.2 對事件的添加
3.3 web頁面的loader延時的處理
?3.4 webDelegate的Setlistener的加載方式
1.WebView高可擴展性封裝
【說明】發(fā)現(xiàn)模塊的開發(fā):是加載WebView的操作,打開之后不應(yīng)該是web內(nèi)部的跳轉(zhuǎn),應(yīng)該是Activity或者是fragment的跳轉(zhuǎn);
這種跳轉(zhuǎn)讓webView的跳轉(zhuǎn)更接近與原生的跳轉(zhuǎn);
回到頂部
1.1 發(fā)現(xiàn)模塊的框架搭建
回到頂部
1.2 webView的基類
【基類】
【初始化webView的接口】
?
【完善基類】
【路由類的創(chuàng)建】
【完善基類】
【創(chuàng)建webview的接口】
【完善基類】
回到頂部
1.3 對webview基類的實現(xiàn)
?
【新建類:webViewClientImpl類: 進行攔截】
[復(fù)寫方法]可以根據(jù)不同的版本進行方法的分類的選擇,為了兼容性,選擇復(fù)寫下面的一個方法;
?
?
1.3.2 對內(nèi)容的攔截
【內(nèi)容攔截的原理】【在web頁面中存在localholf或者是a標(biāo)簽,全部都會以下面的方式攔截下來,然后在原生中強制進行跳轉(zhuǎn),主要實在route中對時間進行處理】
【路由類-1】【新建路由類】使用路由的截斷和處理
?
【完善實現(xiàn)類】寫了下面的代碼表示:頁面間的所有的跳轉(zhuǎn)和JavaScrip中的hof重定向,全部都使用原生的進行接管;
【路由類-2】如果js中包含了電話的鏈接,則需要對電話的協(xié)議tel的協(xié)議進行處理;
[對撥打電話的處理]
[非電話]進行原生的跳轉(zhuǎn),需要判斷上層是否具有delegate即容器,如果上層具有容器,則在上層進行跳轉(zhuǎn),如果上層沒有,則是單層跳轉(zhuǎn);防止bottemBar之內(nèi)層跳轉(zhuǎn),外層不跳轉(zhuǎn)的情況;
?
?1.3.3 對頁面的內(nèi)容的加載
【說明】需要對頁面進行l(wèi)oad的過程
【首先實現(xiàn)對web頁面的加載】
【對local本地頁面的加載】
[對于local本地的解釋]在此處新建的文件asset中的html文件、js文件、樣式等文件都會以本地的形式進行顯示;
[對本地頁面的額外的處理]
?
【共有方法的處理】包含了local和webView的整體的處理;
【調(diào)用】其實在打開頁面的時候就已經(jīng)進行了一些加載了;
回到頂部
1.4 setInitializer的方法的實現(xiàn)
?
?【新建類】com.flj.latte.delegates.web.WebViewInitializer
【設(shè)置初始化的webView】
回到頂部
1.5 webView內(nèi)部的處理和控制
【說明】不做任何的處理,只是程序的需要;
回到頂部
1.6 對初始化方法的調(diào)用
回到頂部
1.7 測試
【說明】先加載本地的頁面;
?
?【修改拼接錯誤】
【使用chrom 調(diào)試】
【使用nginx的遠程測試】
?
回到頂部
?1.8 增加頁面間的跳轉(zhuǎn)
【增加跳轉(zhuǎn)的橫向的動畫】
【新建頁面2】
【為index頁面增加內(nèi)容】
回到頂部
2.Web與原生交互一鍵式配置解決方案
回到頂部
2.1 展現(xiàn)原有的web頁面的樣式
【出現(xiàn)的設(shè)計的不合理】在discoverDelegate下層還有一層bottemBarDelegate,discoverDelegate是一個低層次的delegete;
【再次設(shè)置】
?
?
?
?
【效果】跳轉(zhuǎn)的頁面2沒有出現(xiàn)上下的控制鍵,是一種web原生的狀態(tài)展現(xiàn)出來的;這樣可以更好的適應(yīng)discover頁面的內(nèi)容的不斷的更新,都有web頁面完成;
回到頂部
?2.2 事件的綁定
?【json事件的action事件的原理】就是通過web事件中一些action事件來綁定我們的事件;
【增加注解】
【新建包和類】
【event類】抽象每一個具體的事件;將每一個事件作為每一個類的一個實例來處理;
?
【事件管理的完善】eventManager.class 的完善;
?
【將事件統(tǒng)一的加到事件組中】
回到頂部
2.3事件綁定的測試
【測試】
【書寫web頁面】推薦的工具ws;
【點擊之后沒有反應(yīng)】需要開辟js的通道;
?
?
?【測試】-切換別的action;
【web和原生進行有機的交互】在通過判斷不同的action可以進行不同的動作的執(zhí)行;
?
回到頂部
2.4 使用原生處理web
?
回到頂部
3. 將混合微框架集成到latte并完善
回到頂部
3.1 js接口的增加
?【說明】通過配置項對web的名稱進行修改;
?
回到頂部
3.2 對事件的添加
?
回到頂部
3.3 web頁面的loader延時的處理
【增加延時】為了能夠更好的看清效果,增加延時,使用handler處理;
回到頂部
?3.4 webDelegate的Setlistener的加載方式
【webDelegate的Setlistener的加載方式】有很多種,在impl中可以完成一次加載;
?
【加載測試】sui建立的一些css和js的頁面;
?
總結(jié)
以上是生活随笔為你收集整理的云炬Android开发笔记 12基于WebView的混合App框架设计(包含浏览器与原生请求Cookie的处理)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言和C+的区别是什么?8个点通俗易懂
- 下一篇: 做程序员的这五年