一種安卓智能終端瀏覽器視頻顯示方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及頁面顯示技術(shù)領(lǐng)域,尤其涉及一種安卓智能終端瀏覽器視頻顯示方法及裝置。
【背景技術(shù)】
[0002]隨著觸屏式智能終端的普及和網(wǎng)絡(luò)技術(shù)的發(fā)展,越來越多的用戶使用觸屏式智能終端享受隨時隨地上網(wǎng)和觀看視頻的便利。用戶在觀看視頻時,如果希望同時在視頻所在網(wǎng)頁上查看相關(guān)視頻或其他信息,通常會使用網(wǎng)頁內(nèi)嵌視頻的播放方式,在這種播放方式下,視頻內(nèi)嵌于網(wǎng)頁中,且用戶滑屏(例如移動和縮放操作)或者切換橫豎屏使網(wǎng)頁頁面移動或縮放時,視頻會跟隨網(wǎng)頁頁面一起移動或縮放。
[0003]目前觸屏式智能終端中,基于Linux自由及開放源代碼的Android(安卓)系統(tǒng)是使用最為廣泛的操作系統(tǒng),占據(jù)觸屏式智能終端操作系統(tǒng)超過78%的份額。Android系統(tǒng)的觸屏智能終端中,View樹(視圖樹)為視圖顯示的基礎(chǔ)構(gòu)件,需要顯示的視圖加入View樹后才能顯示。網(wǎng)頁顯示的實(shí)現(xiàn),是在View樹中添加WebView (網(wǎng)頁視圖,安卓系統(tǒng)的webkit內(nèi)核瀏覽器生成的顯示網(wǎng)頁的視圖),WebView則對網(wǎng)頁內(nèi)容進(jìn)行繪制,并顯示繪制得到的網(wǎng)頁頁面。
[0004]現(xiàn)階段Android系統(tǒng)瀏覽器內(nèi)嵌視頻的實(shí)現(xiàn)方案,則是將VideoView(視頻視圖,Android系統(tǒng)提供的一個媒體播放顯示和控制的控件)作為WebView的子視圖(ChildView,或稱為子View),由WebView進(jìn)行繪制和顯示。當(dāng)用戶選擇了網(wǎng)頁頁面并滑屏,或者切換橫豎屏?xí)r,WebView響應(yīng)用戶的動作進(jìn)行移動和縮放,并重新繪制包括子View在內(nèi)的網(wǎng)頁內(nèi)容,包括重新繪制VideoView,使VideoView跟隨WebView移動和縮放,從用戶角度看,視頻會跟著網(wǎng)頁頁面一起變化。
[0005]發(fā)明人在實(shí)現(xiàn)本發(fā)明的過程中發(fā)現(xiàn),現(xiàn)階段Android系統(tǒng)瀏覽器內(nèi)嵌視頻的實(shí)現(xiàn)方案,由于在WebView上增加了 VideoView,即VideoView為WebView的子視圖,導(dǎo)致在響應(yīng)用戶的動作,WebView進(jìn)行重新繪制時,同時對VideoView也進(jìn)行重新繪制,而VideoView的繪制通常會占據(jù)很多CPU資源,從而使網(wǎng)頁繪制的處理時間變長,頁面變化的幀率降低,頁面變化變得卡頓。而且即使視頻已經(jīng)滑出了手機(jī)屏幕的可見范圍,也依然會對VideoView進(jìn)行重新繪制,導(dǎo)致滑屏?xí)r頁面仍然無法順暢地移動和縮放。因此,在有視頻的頁面,用戶滑屏或者縮放操作時會出現(xiàn)卡頓現(xiàn)象。
【發(fā)明內(nèi)容】
[0006]為克服相關(guān)技術(shù)中瀏覽器內(nèi)嵌視頻播放方式下頁面變化時出現(xiàn)頁面卡頓的問題,本申請?zhí)峁┮环N安卓智能終端瀏覽器視頻顯示方法及裝置。
[0007]根據(jù)本申請實(shí)施例的第一方面,提供一種安卓智能終端瀏覽器視頻顯示方法,包括:
[0008]在視圖樹中添加透明視圖,所述透明視圖與網(wǎng)頁視圖擁有相同的基礎(chǔ)視圖,所述透明視圖層疊覆蓋于網(wǎng)頁視圖之前,且與網(wǎng)頁視圖的大小和比例相同;
[0009]在透明視圖中對應(yīng)的位置,創(chuàng)建視頻視圖;
[0010]當(dāng)網(wǎng)頁視圖發(fā)生變化時,向透明視圖發(fā)送視圖變化消息;
[0011]透明視圖根據(jù)所述視圖變化消息相應(yīng)地變化所述視頻視圖。
[0012]其中,所述當(dāng)網(wǎng)頁視圖發(fā)生變化時,向透明視圖發(fā)送視圖變化消息,包括:
[0013]根據(jù)網(wǎng)頁視圖的變化建立視圖變化消息隊列;
[0014]根據(jù)視圖變化消息隊列的順序,向透明視圖發(fā)送所述視圖變化消息。
[0015]其中,所述視圖變化消息包括移動消息、縮放消息,當(dāng)網(wǎng)頁視圖發(fā)生移動變化時,向透明視圖發(fā)送移動消息;當(dāng)網(wǎng)頁視圖發(fā)生縮放變化時,向透明視圖發(fā)送縮放消息,所述視圖變化消息隊列包括移動消息隊列和縮放消息隊列。
[0016]可選的,所述的安卓智能終端瀏覽器視頻顯示方法,還包括:
[0017]根據(jù)每個消息隊列中視圖變化消息建立的順序,判斷每個消息隊列中間隔預(yù)設(shè)個數(shù)的兩個視圖變化消息中視圖變化參數(shù)之間的差值是否小于相應(yīng)的視圖變化參數(shù)預(yù)設(shè)值;
[0018]當(dāng)間隔預(yù)設(shè)個數(shù)的兩個視圖變化消息中視圖變化參數(shù)之間的差值小于相應(yīng)的視圖變化參數(shù)預(yù)設(shè)值時,將兩個視圖變化消息中在后的視圖變化消息發(fā)送給透明視圖,并刪除在后的視圖變化消息之前的視圖變化消息,否則,向透明視圖發(fā)送所述兩個視圖變化消息間隔以內(nèi)的每個視圖變化消息。
[0019]其中,當(dāng)間隔預(yù)設(shè)個數(shù)的兩個移動消息中移動坐標(biāo)的距離小于移動預(yù)設(shè)距離值時,將所述兩個移動消息中在后的移動消息發(fā)送給透明視圖,并刪除在后的移動消息之前的移動消息,否則,向透明視圖發(fā)送所述兩個移動消息間隔以內(nèi)的每個移動消息;
[0020]其中,當(dāng)間隔預(yù)設(shè)個數(shù)的兩個縮放消息中縮放比例的差值小于縮放預(yù)設(shè)值時,將所述兩個縮放消息中在后的縮放消息發(fā)送給透明視圖,并刪除在后的縮放消息之前的縮放消息,否則,向透明視圖發(fā)送所述兩個縮放消息間隔以內(nèi)的每個縮放消息。
[0021]可選的,所述的安卓智能終端瀏覽器視頻顯示方法,還包括:
[0022]當(dāng)透明視圖接收到網(wǎng)頁視圖開始變化時向透明視圖發(fā)送的開始視圖變化消息后,隱藏所述視頻視圖;
[0023]當(dāng)透明視圖接收到網(wǎng)頁視圖結(jié)束變化時向透明視圖發(fā)送的結(jié)束變化消息以及最終變化參數(shù)消息后,根據(jù)所述最終變化參數(shù)消息對所述視頻視圖做出相應(yīng)的變化,并顯示所述視頻視圖。
[0024]根據(jù)本申請實(shí)施例的第二方面,提供一種安卓智能終端瀏覽器視頻顯示裝置,包括:
[0025]透明視圖添加模塊,用于在視圖樹中添加透明視圖,所述透明視圖與網(wǎng)頁視圖擁有相同的基礎(chǔ)視圖,且所述透明視圖層疊覆蓋于網(wǎng)頁視圖之前;
[0026]視頻視圖創(chuàng)建模塊,用于在透明視圖中對應(yīng)的位置,創(chuàng)建視頻視圖;
[0027]消息發(fā)送模塊,用于當(dāng)網(wǎng)頁視圖發(fā)生變化時,向透明視圖發(fā)送視圖變化消息;
[0028]視頻視圖控制模塊,用于根據(jù)所述視圖變化消息相應(yīng)地變化所述視頻視圖。
[0029]其中,所述消息發(fā)送模塊,包括:
[0030]消息隊列建立模塊,用于根據(jù)網(wǎng)頁視圖的變化,建立視圖變化消息隊列;
[0031]發(fā)送模塊,用于根據(jù)視圖變化消息隊列中視圖變化消息建立的順序,向透明視圖發(fā)送視圖變化消息。
[0032]可選的,所述的安卓智能終端瀏覽器視頻顯示裝置中,所述消息發(fā)送模塊,還包括:
[0033]消息判斷模塊,用于根據(jù)每個消息隊列中視圖變化消息建立的順序,判斷每個消息隊列中間隔預(yù)設(shè)個數(shù)的兩個視圖變化消息中視圖變化參數(shù)之間的差值是否小于相應(yīng)的視圖變化參數(shù)預(yù)設(shè)值;
[0034]消息發(fā)送控制模塊,用于當(dāng)間隔預(yù)設(shè)個數(shù)的兩個視圖變化消息中視圖變化參數(shù)之間的差值小于相應(yīng)的視圖變化參數(shù)預(yù)設(shè)值時,將兩個視圖變化消息中在后的視圖變化消息發(fā)送給透明視圖,并刪除在后的視圖變化消息之前的視圖變化消息,否則,向透明視圖發(fā)送所述兩個視圖變化消息間隔以內(nèi)的每個視圖變化消息。
[0035]其中,所述消息判斷模塊,包括:
[0036]移動消息判斷模塊,用于判斷間隔預(yù)設(shè)個數(shù)的兩個移動消息中移動坐標(biāo)之間的距離是否小于移動距離預(yù)設(shè)值;
[0037]縮放消息判斷模塊,用于判斷間隔預(yù)設(shè)個數(shù)的兩個縮放消息中縮放比例的差值是否小于縮放預(yù)設(shè)值,
[0038]其中,所述消息發(fā)送控制模塊,包括:
[0039]移動消息發(fā)送控制模塊,用于當(dāng)間隔預(yù)設(shè)個數(shù)的兩個移動消息中移動坐標(biāo)之間的距離小于移動距離預(yù)設(shè)值時,將所述兩個移動消息中在后的移動消息發(fā)送給透明視圖,并刪除在后的移動消息之前的移動消息,否則,向透明視圖發(fā)送所述兩個移動消息間隔以內(nèi)的每個移動消息;
[0040]縮放消息發(fā)送控制模塊,用于當(dāng)間隔預(yù)設(shè)個數(shù)的兩個縮放消息中縮放比例的差值小于縮放預(yù)設(shè)值時,將所述兩個縮放消息中在后的縮放消息發(fā)送給透明視圖,并刪除在后的移動消息之前的移動消息,否則,向透明視圖發(fā)送所述兩個縮放消息間隔以內(nèi)的每個縮放消息。
[0041]可選的,所述消息發(fā)送模塊,包括:
[0042]開始消息發(fā)送模塊,用于當(dāng)網(wǎng)頁視圖開始變化時,向透明視圖發(fā)送開始變化消息;
[0043]結(jié)束消息發(fā)送模塊,用于當(dāng)網(wǎng)頁視圖結(jié)束變化時,向透明視圖發(fā)送結(jié)束變化消息以及最終變化參數(shù)消息,
[0044]可選的,所述視頻視圖控制模塊,包括:
[0045]視頻視圖隱藏模塊,用于在透明視圖接收到所述開始變化消息后,在透明視圖中隱藏所述視頻視圖;
[0046]視頻視圖變化模塊,用于在透明視圖接收到所述最終變化參數(shù)消息后,根據(jù)所述最終變化參數(shù)消息,在透明視圖中相應(yīng)地變化所述視頻視圖;
[0047]視頻視圖顯示模塊,用于在透明視圖接收到所述結(jié)束變化消息后,在透明視圖中顯示所述視頻視圖。
[0048]其中,所述開始消息發(fā)送模塊,用于當(dāng)網(wǎng)頁視圖開始移動和/或縮放時,向透明視圖發(fā)送開始移動消息和/或開始縮放消息;
[0049]所述結(jié)束消息發(fā)送模塊,用于當(dāng)網(wǎng)頁視圖結(jié)束移動和/或縮放時,向透明視圖發(fā)送結(jié)束移動消息和/或結(jié)束縮放消息以及最終移動坐標(biāo)消息和/或最終縮放比例消息;
[0050]所述視頻視圖隱藏模塊,用于在透明視圖接收到所述開始移動和/或縮放消息后,在透明視圖中隱藏所述視頻視圖;
[0051]所述視頻視圖變化模塊,用于在透明視圖接收到所述最終移動距離消息和/或最終縮放比例消息后,根據(jù)所述最終移動坐標(biāo)消息和/或最終縮放比例消息,在透明視圖中移動和/或縮放所述視頻視圖;
[0052]所述視頻視圖顯示模塊,用于在透明視圖接收到所述結(jié)束移動消息和/或結(jié)束縮放消息后,在透明視圖中顯示所述視頻視圖。
[0053]本申請實(shí)施例提供的技術(shù)方案,通過在View樹中添加與WebView同一基礎(chǔ)視圖的透明視圖,透明視圖的覆蓋于基礎(chǔ)視圖之前,與WebView大小和縮放比例相等,不包括任何元素內(nèi)容,因此不響應(yīng)任何動作,在View樹中添加透明視圖后,將用于播放視頻的VideoView作為透明視圖的子視圖,當(dāng)WebView發(fā)生變化時,向透明視圖發(fā)送視圖變化消息,透明視圖根據(jù)接收到的視圖變化消息調(diào)整VideoView的位置和大小,使VideoView跟隨WebView變化。由于將VideoView添加與透明視圖中而非內(nèi)嵌于WebView中,因此本申請實(shí)施例提供的技術(shù)方案可以包括以下有益效果:在WebView發(fā)生變化時,不需重新繪制VideoView,從而節(jié)省CPU處理資源,加快滑屏?xí)r網(wǎng)頁頁面變化的速度,使網(wǎng)頁頁面變化更流暢。
[0054]應(yīng)當(dāng)理解的是,以上的一般描述和后文的細(xì)節(jié)描述僅是示例性和解釋性的,并不能限制本申請。
【附圖說明】
[0055]為了更清楚地說明本申請實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,對于本領(lǐng)域普通技術(shù)人員而言,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0056]圖1為本申請一示例性實(shí)施例示出的一種安卓智能終端瀏覽器視頻顯示方法的流程示意圖。
[0057]圖2為本申請另一示例性實(shí)施例示出