亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        Android開(kāi)發(fā)中對(duì)HTML內(nèi)容的顯示

        2015-10-24 20:38:45米建胡暢霞劉穎
        科技傳播 2015年16期

        米建++胡暢霞++劉穎

        摘 要 隨著Android科技的發(fā)展,手機(jī)客戶(hù)端接受了更多的HTML內(nèi)容。本文作者采用WebView直接顯示法結(jié)合人機(jī)交互的原則,從用戶(hù)體驗(yàn)的角度解析傳入的HTML內(nèi)容,顯示出完整的圖文內(nèi)容。

        關(guān)鍵詞 Android;HTML標(biāo)簽;WebView

        中圖分類(lèi)號(hào)TN91 文獻(xiàn)標(biāo)識(shí)碼 A 文章編號(hào) 1674-6708(2015)145-0049-01

        Android智能手機(jī)已經(jīng)在我們現(xiàn)實(shí)生活中無(wú)處不在,成為我們生活中不可或缺的一部分,Android應(yīng)用充斥和豐富著我們的生活。隨著互聯(lián)網(wǎng)的發(fā)展和手機(jī)網(wǎng)速的提升Android客戶(hù)端獲取網(wǎng)絡(luò)的信息資源已是稀松平常,獲取的信息中帶有HTML內(nèi)容是必不可少的,如果把HTML標(biāo)記去掉很大程度上會(huì)破壞資源的完整性,即便獲取了資源內(nèi)的文字但文字的樣式也會(huì)消失,資源內(nèi)的鏈接和圖片同樣會(huì)消失。在這種形勢(shì)下Android客戶(hù)端對(duì)HTML內(nèi)容的解析就是大勢(shì)所趨。

        1 方法介紹

        Android對(duì)HTML內(nèi)容解析主要有四種方法:1)Java正則表達(dá)式過(guò)濾法,Java正則表達(dá)式(Regular Expression)就是一個(gè)字符構(gòu)成的串,這個(gè)方法可以搜索提取出任何你想要的字符串,只要找到一個(gè)符合要求的正則表達(dá)式就可以過(guò)濾去除HTML標(biāo)簽;2)jsoup 解析器解析法,jsoup 是一款 Java 的HTML 解析器,可直接解析某個(gè)URL地址、HTML文本內(nèi)容等。它提供了一套非常省力的API,可通過(guò)DOM,CSS以及類(lèi)似于jquery的操作方法來(lái)取出和操作數(shù)據(jù);3)TextView自帶類(lèi)解析法,Android提供了android.text.Html類(lèi)和Html.ImageGetter、Html.TagHandler接口,格式化字符串為HTML樣式處理后再在TextView中顯示;4)WebView直接顯示法,Android提供了方便非格式化方法不需要轉(zhuǎn)碼直接在WebView中顯示。

        2 實(shí)際解決方案

        2.1 需求分析

        本人在承擔(dān)河北省大學(xué)生創(chuàng)新項(xiàng)目《“互聯(lián)網(wǎng)+”下畢業(yè)設(shè)計(jì)評(píng)價(jià)系統(tǒng)》中遇到了在Android客戶(hù)端顯示HTML內(nèi)容的問(wèn)題。在通知公告二級(jí)頁(yè)面中,主體顯示通知公告的具體內(nèi)容,通知公告的內(nèi)容是從后臺(tái)數(shù)據(jù)庫(kù)中讀取,數(shù)據(jù)庫(kù)中通知內(nèi)容字段存儲(chǔ)的既有文字還有HTML標(biāo)簽,這兩者組成了整體。在手機(jī)客戶(hù)端正確合理顯示HTML內(nèi)容成為了本界面的一個(gè)關(guān)鍵。

        2.2 解決方案

        作者首先采用了Java正則表達(dá)式過(guò)濾法,用過(guò)濾HTML標(biāo)簽的正則表達(dá)式(“<([^>]*)>”)過(guò)濾去除HTML標(biāo)簽,只得到了內(nèi)容中的文字但HTML標(biāo)簽的功能由于被剔除而消失,段落格式、圖片、鏈接等內(nèi)容無(wú)法顯示。jsoup選擇器選擇出img標(biāo)簽來(lái)單獨(dú)顯示圖片,但是這種方法就破壞了文字和圖片的整體性,降低了用戶(hù)體驗(yàn)不利于人機(jī)交互。TextView自帶類(lèi)解析法可以使HTML內(nèi)容中的文字和圖片整體顯示,并且解析后文字擁有原有的段落格式和顏色,解析后若文字過(guò)小或者圖片過(guò)大,這很大程度上會(huì)影響用戶(hù)體驗(yàn),并且TextView是不支持縮放,這就需要一種更人性化的解析方式。

        作者采用了WebView直接顯示法,優(yōu)勢(shì)主要有兩個(gè),一是可以輕松更改需要展現(xiàn)的內(nèi)容(包括樣式),二是可以實(shí)現(xiàn)部分功能的跨平臺(tái)。WebView加載HTML代碼的方法主要有:1)WebView.loadUrl(String strhtml)方法;2)WebView.loadData(String data, String mimeType, String encoding)方法;3)loadDataWithBaseURL()方法。

        作者采用了第三種方法顯示HTML內(nèi)容:loadDataWithBaseURL (String baseUrl, String data, String mimeType, String encoding, String historyUrl),在baseUrl的賦值上,并非要傳一個(gè)Url參數(shù),因?yàn)樗皇且粋€(gè)標(biāo)志位,用來(lái)標(biāo)志當(dāng)前頁(yè)面的Key值。historyUrl為value值,在加載時(shí),它會(huì)把baseUrl和historyUrl傳到List列表中,當(dāng)作歷史記錄來(lái)使用,當(dāng)前進(jìn)和后退時(shí),它會(huì)通過(guò)baseUrl來(lái)尋找historyUrl的路徑,通過(guò)加載historyUrl路徑來(lái)加載歷史界面。使用這種方法不需要先將HTML內(nèi)容進(jìn)行轉(zhuǎn)碼,直接可以顯示。實(shí)例代碼:webView.loadDataWithBaseURL( null, massage, “text/html”, “utf-8”, null),massage為作者從數(shù)據(jù)庫(kù)中獲得HTML內(nèi)容字段,并非獲取字段后直接傳入到loadDataWithBaseURL()方法中,需要對(duì)HTML標(biāo)簽進(jìn)行路徑補(bǔ)全處理。

        HTML標(biāo)簽是由眾多功能標(biāo)簽組成,img標(biāo)簽是重要的組成部分,img標(biāo)簽中的圖片路徑分為絕對(duì)路徑和相對(duì)路徑。在Android客戶(hù)端解析HTML標(biāo)簽時(shí),圖片的鏈接路徑必須是相對(duì)路徑才能在WebView中顯示出完整的圖片,否則只有圖片的邊緣。但在網(wǎng)站中的圖片很多都是絕對(duì)路徑這就需要對(duì)img標(biāo)簽進(jìn)行單獨(dú)的處理將絕對(duì)路徑轉(zhuǎn)化為相對(duì)路徑。操作主要分為兩步:第一步判斷HTML標(biāo)簽中是否含有img標(biāo)簽;第二步帶有絕對(duì)路徑的img標(biāo)簽利用字符串補(bǔ)全替代法,將路徑補(bǔ)充完整。字符串的替換會(huì)影響html代碼的顯示速度,所以需要判斷HTML標(biāo)簽中是否含有img標(biāo)簽,降低字符串替換對(duì)顯示效率的影響。在判斷是否含有img標(biāo)簽時(shí),首先利用jsoup解析器解析出img標(biāo)簽再進(jìn)行if判斷。示例代碼:String massage1 = massage.replaceAll(“(.*?)src=\”(.*?)”,”$1src=\”http://cems.stdu.edu.cn”)。

        在本次項(xiàng)目中作者添加了一些人性化的操作,例如雙擊屏幕實(shí)現(xiàn)自適應(yīng)屏幕功能,添加此功能遵循了人機(jī)交互原則,增強(qiáng)了用戶(hù)體驗(yàn)。功能的實(shí)現(xiàn)是Android提供了WebSetting工具類(lèi),工具類(lèi)中專(zhuān)門(mén)設(shè)置WebView的一些特征、屬性,只需要設(shè)置WebView的如下這些

        屬性。

        1)WebView.getSettings().setSupportZoom(true);// 設(shè)置可以支持縮放

        2)WebView.getSettings().setBuiltInZoomControls(true);// 設(shè)置出現(xiàn)縮放工具

        需要注意的是WebView顯示HTML內(nèi)容的速度比較慢尤其是加載網(wǎng)頁(yè)時(shí),建議對(duì)圖片進(jìn)行延遲載入處理,并將耗時(shí)加載操作放到子線程中來(lái)提高顯示效率。

        3 結(jié)論

        在Android手機(jī)客戶(hù)端顯示HTML內(nèi)容有多種方式,每種方式都有各自的優(yōu)缺點(diǎn),在項(xiàng)目研發(fā)過(guò)程中,可根據(jù)需求來(lái)選擇高效的解析方法。

        參考文獻(xiàn)

        [1]明日科技.Android從入門(mén)到精通[M].清華大學(xué)出版社,2010.

        [2]李剛.瘋狂Android講義[M].電子工業(yè)出版社,2013.

        [3]邁耶.Android4高級(jí)編程[M].3版.2013.

        2017天天爽夜夜爽精品视频| 国产av一区二区三区天美| 三区中文字幕在线观看| 国产精品妇女一二三区| 亚洲暴爽av人人爽日日碰| 国产乱子伦精品免费无码专区| 久久麻豆精品国产99国产精| 久久精品国产久精国产69| 亚洲精品在线观看自拍| 久久99人妖视频国产| 免费又黄又爽又色的视频| 藏春阁福利视频| 欧美日一本| 经典亚洲一区二区三区| 亚洲av熟女少妇久久| 国产成人午夜无码电影在线观看| 亚洲精品无码人妻无码| 高潮社区51视频在线观看| 日本女优中文字幕有码| 在线观看午夜视频一区二区| 亚洲av无码av在线播放| 97超级碰碰人妻中文字幕| 国产美女三级视频网站| 久久99精品国产麻豆| 久久超碰97人人做人人爱 | 无码av在线a∨天堂毛片| 久久综合老鸭窝色综合久久 | 少妇一区二区三区精选| аⅴ天堂中文在线网| 国产精品免费久久久久影院仙踪林 | 玩中年熟妇让你爽视频| 亚洲精品国产成人| 亚洲电影一区二区| 伊人久久大香线蕉av不变影院| 久久久久久久久毛片精品| 久久香蕉免费国产天天看| 国产精品亚洲综合天堂夜夜| 日本a爱视频二区三区| 暖暖 免费 高清 日本 在线| 亚洲爆乳精品无码一区二区| 国产男女插插一级|