1. 程式人生 > >WebView實際應用場景

WebView實際應用場景

lin demo 方式 事件 新聞 判斷 url 合規 規範

PS:首先,在這裏我們暫時不考慮只是為了打開一個網頁而使用WebView的這種Demo式的初級使用

說到應用場景,我們還是想象一個能使用WebView的情況,用具體的業務邏輯來引出WebView

我們假設一種情況,以知乎的api舉例,當我獲取了知乎日報中其中一種日報的數據,例如音樂日報的輸入,返回值是一個Json,使用Gson將其解析之後用一個封裝好的實體類將數據封裝好,然後顯示在列表中

在這裏都沒有任何問題,拿著數據做個列表,很簡單

但是再之後,需要實現每一項的點擊事件,點擊後要顯示該項的具體內容(例如說這組數據的第一項是XXXX新聞,我點開,需要查看XXXX新聞的具體內容),這時候有幾種解決辦法呢

其實這個問題的分歧點應該在於如何顯示(廢話,你不獲取這個子網頁的數據,你拿啥顯示,這一步是必須做的),目前我自己實現過的有兩種

所以首先繼續獲取第二個網頁的數據(是Json就使用Gson繼續解析封裝,有時候沒有api就只能用Jsoup之類的爬蟲將內容爬下來然後自己提取需要的地方了),然後將數據封裝好

現在分歧來了

其一,自己用android寫一個頁面,比如說上面擺好banner輪播圖用以顯示網頁中的圖片,下面用textView來顯示具體的文字內容

優點:樣式你自己已經定義好了,無需去考慮樣式的問題,只需要考慮拿著數據之後如何加載的問題

缺點:與網頁端最後顯示的樣式有較大出入,例如人家是一段文字一張圖,我們如果需要做到這點的話,可能需要動態的去添加控件,而這樣又很不符合規範,可能會造成其他意想不到的問題,例如說加載圖片,你可能需要用到Glide,但是如果你不事先定義好這個圖片的大小,Glide又會使得圖片變形,位置錯亂,如果統一定義尺寸的話,例如只是一個表情圖片,你可能把他們擴大到了一個大圖的大小,但是你一個一個定義好又太為耗時,需要不停的判斷,邏輯上就很容易出現問題,即使不出現其他的問題,光是用戶體驗就夠受的了

其二,用WebView來實現,用字符串拼接的方式來將實體數據拼接成html,並且可使用css來美化樣式,做到與網頁相仿的效果,並且可以使用js來使WebView的內容與android交互

優點:與網頁可以做到類似樣式

缺點:加載確實稍慢一籌,因為需要拼接還需要加載樣式,這裏面有一定時間的消耗

這兩種我個人認為沒有絕對的高下之分,看具體需求而定,不過憑心而論我認為後者的制作成本要高,不過最後完成後相似度也要高一籌

如果網頁自適應做的相當好,那麽哪怕是直接用WebView的loadUrl也不失為一種特別好的方法

WebView實際應用場景