欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種呼吸燈效果的進度條的算法的制作方法

文檔序號:12863526閱讀:1114來源:國知局
本發(fā)明涉及進度條計算及呈現(xiàn)
技術領域
:,具體說是一種呼吸燈效果的進度條的算法。
背景技術
::android輸入控件是一種用于人機交互的元件,androidsdk為此提供了各種各樣的輸入控件,包括:原生控件,例如:文本域(textview)、按鈕(button)、編輯框(edittext)、單選按鈕(radiobutton)、列表控件(listview)以及顯示圖片控件(imageview)等,布局控件,例如:linearlayout、relativelayout、framelayout以及不太常用的tablelayout等等。利用這些基礎的輸入控件,能實現(xiàn)普通的布局展示,但對于特殊的應用場景,比如復雜的動畫展示,或者特別的圖形圖像要求,利用這些基礎的輸入控件無法實現(xiàn),因此就需要自定義控件來滿足特別的需求。在android系統(tǒng)中,自定義控件,主要包括兩類:第一類,組合自定義控件,是指使用系統(tǒng)提供的各種界面控件,通過自定義封裝成包括多個系統(tǒng)控件的自定義控件,代碼在內(nèi)部處理各子控件的交互,簡化使用。第二類,自繪制控件,是指通過繼承系統(tǒng)提供的各種界面控件,在控件的測量、布局、繪制三個方法中,使用代碼進行測量、繪制、處理交互事件的自定義控件。自繪制控件能提供比系統(tǒng)控件更新穎的界面、更豐富的交互方式。新買的耳機,為了獲得良好的聽感,大多需要通過專業(yè)軟件進行煲機,增加耳機壽命。煲機是指:通過播放一段時間特殊音頻,讓耳機達到最佳效果。而通常煲機過程持續(xù)時間很長,10~100小時不等,因此在堡機過程中,需要一個智能的體驗好的煲機進度的展示,如果動畫處理的不當,會導致內(nèi)存持續(xù)增加,cpu和gpu負擔過重,進而導致手機發(fā)熱,耗電嚴重,甚至應用崩潰。技術實現(xiàn)要素:針對現(xiàn)有技術中存在的缺陷,本發(fā)明的目的在于提供一種呼吸燈效果的進度條的算法,通過圓環(huán)形進度條及呼吸燈效果的環(huán)繞,實現(xiàn)了具美感、個性化、直觀易懂的進度條展現(xiàn),算法效率高,占用資源少,通用性好,適合于android系統(tǒng)中使用。為達到以上目的,本發(fā)明采取的技術方案是:一種呼吸燈效果的進度條的算法,其特征在于,包括如下步驟:步驟1,基于布局控件linearlayout,自定義新的控件類burnprogressview,在構(gòu)造函數(shù)處增加初始化方法,包括:構(gòu)造200個畫筆模糊過濾器,設置好圓環(huán)形進度條的半徑,初始化繪制進度以及用于繪制背景的畫筆;步驟2,在onsizechanged回調(diào)中,根據(jù)控件尺寸,初始化圓環(huán)形進度條的尺寸,根據(jù)畫筆的寬度,確定內(nèi)圈和外圈的區(qū)域,以便在進度條兩邊繪制漸變弧度線,達到凹凸立體效果;步驟3,開啟呼吸燈變化的線程,根據(jù)設定好的刷新頻率,按以下方式循環(huán)切換畫筆模糊過濾器半徑的值:當達到最大值時,需要從最大值基礎上遞減,當達到最小值時,需要從最小值基礎上遞增;同時,改變波紋線條的高度標記,使其與呼吸燈節(jié)奏一致,所述波紋線條作為背景圖案,波紋線條由若干從左到右依次排列、互相平行的豎線構(gòu)成;步驟4,在ondraw回調(diào)中,順序動態(tài)繪制進度及各個效果;步驟5,停止進度動畫。在上述技術方案的基礎上,自定義新的控件類burnprogressview,具體包括:進度條的畫筆寬度mstrokewidth,繪制進度的畫筆mprogresspaint畫筆的角度漸變器mgradient30_100,繪制背景以及進度條的區(qū)域mrect、moutrect及mrectinner1,繪制波紋線條的高度數(shù)組mheight,給呼吸燈畫筆設置的模糊過濾器marrayfilterblur。在上述技術方案的基礎上,步驟1中,還包括:將任務劃分為若干階段,并對每個階段界面繪制的界面刷新頻率進行設定。在上述技術方案的基礎上,所述任務為煲機任務,整個煲機進度分為4個階段,每個階段界面繪制的界面刷新頻率為160、90、40和20,單位是毫秒。在上述技術方案的基礎上,4個階段分別對應四段弧線,四段弧線首位相接構(gòu)成圓環(huán)形進度條,四段弧線的最高高度分別為20、35、40和40,單位是像素。在上述技術方案的基礎上,步驟3的具體步驟為:步驟3.1,定義線程的runnable接口mlightrunnable,設定同步對象鎖mobject,在單次繪制過程中防止其他線程的訪問,保證單次繪制的完整性;步驟3.2,設置線程等待時間;步驟3.3,繪制半徑達到最大時,開始由最大值遞減;步驟3.4,繪制半徑達到最小時,開始由最小值遞增;步驟3.5,當繪制暫停時,刷新界面,線程鎖定,進入等待喚醒階段,當再次開啟時,解除鎖定,重新開始繪制。在上述技術方案的基礎上,步驟4的具體步驟為:步驟4.1,繪制圓環(huán)形進度條深色背景;步驟4.2,繪制圓環(huán)形進度條左右兩側(cè)的漸變圓弧,達到凹凸效果的展示;步驟4.3,實現(xiàn)呼吸燈效果;步驟4.4,繪制跟隨進度顯示的進度文字;步驟4.5,繪制位于圓環(huán)形進度條中心的描述文字,當文字超過繪制的區(qū)域后,設置為向左勻速循環(huán)滾動。在上述技術方案的基礎上,步驟5的具體步驟為:通過設置ispaused暫停標記,來控制界面進度的刷新,如果ispaused為true,表示執(zhí)行了暫停邏輯,繪制最后一幀界面,根據(jù)步驟3.1的mobject同步鎖進入線程等待流程,當設置ispaused標記為false以及執(zhí)行喚醒線程流程之后,界面重新開始繪制。本發(fā)明所述的呼吸燈效果的進度條的算法,通過圓環(huán)形進度條及呼吸燈效果的環(huán)繞,實現(xiàn)了具美感、個性化、直觀易懂的進度條展現(xiàn),算法效率高,占用資源少,通用性好,適合于android系統(tǒng)中使用。本發(fā)明所述的呼吸燈效果的進度條的算法,在煲機(例如耳機的煲機)過程中,圓環(huán)形進度條和呼吸燈效果協(xié)調(diào)展現(xiàn),尤為適用。針對煲機時間久的特殊場景,根據(jù)不同階段,展示不同的呼吸節(jié)奏,優(yōu)化內(nèi)存使用,效率更高,體驗更佳。附圖說明本發(fā)明有如下附圖:圖1本發(fā)明的流程圖。圖2呼吸燈效果的進度條示例。具體實施方式以下結(jié)合附圖對本發(fā)明作進一步詳細說明。如圖1、2所示,本發(fā)明所述的呼吸燈效果的進度條的算法,包括如下步驟:步驟1,基于布局控件linearlayout,自定義新的控件類burnprogressview,在構(gòu)造函數(shù)處增加初始化方法,包括:構(gòu)造200個畫筆模糊過濾器,設置好圓環(huán)形進度條的半徑,初始化繪制進度以及用于繪制背景的畫筆;步驟2,在onsizechanged回調(diào)中,根據(jù)控件尺寸,初始化圓環(huán)形進度條的尺寸,根據(jù)畫筆的寬度,確定內(nèi)圈和外圈的區(qū)域,以便在進度條兩邊繪制漸變弧度線,達到凹凸立體效果;步驟3,開啟呼吸燈變化的線程,根據(jù)設定好的刷新頻率,按以下方式循環(huán)切換畫筆模糊過濾器半徑的值:當達到最大值時,需要從最大值基礎上遞減,當達到最小值時,需要從最小值基礎上遞增;同時,改變波紋線條的高度標記,使其與呼吸燈節(jié)奏一致,所述波紋線條作為背景圖案,波紋線條由若干從左到右依次排列、互相平行的豎線構(gòu)成;構(gòu)成波紋線條的豎線,采用中間高兩邊低的方式呈現(xiàn)波紋效果;步驟4,在ondraw回調(diào)中,順序動態(tài)繪制進度及各個效果;步驟5,停止進度動畫。在上述技術方案的基礎上,步驟1中,自定義新的控件類burnprogressview,具體包括:進度條的畫筆寬度mstrokewidth,繪制進度的畫筆mprogresspaint畫筆的角度漸變器mgradient30_100,繪制背景以及進度條的區(qū)域mrect、moutrect及mrectinner1,繪制波紋線條的高度數(shù)組mheight,給呼吸燈畫筆設置的模糊過濾器marrayfilterblur。在上述技術方案的基礎上,步驟1中,還包括:將任務劃分為若干階段,并對每個階段界面繪制的界面刷新頻率進行設定。在上述技術方案的基礎上,所述任務為煲機任務,整個煲機進度分為4個階段,每個階段界面繪制的界面刷新頻率為160、90、40和20,單位是毫秒。在上述技術方案的基礎上,4個階段分別對應四段弧線,四段弧線首位相接構(gòu)成圓環(huán)形進度條,四段弧線的最高高度分別為20、35、40和40,單位是像素。在上述技術方案的基礎上,步驟3的具體步驟為:步驟3.1,定義線程的runnable接口mlightrunnable,設定同步對象鎖mobject,在單次繪制過程中防止其他線程的訪問,保證單次繪制的完整性;步驟3.2,設置線程等待時間;步驟3.3,繪制半徑達到最大時,開始由最大值遞減;步驟3.4,繪制半徑達到最小時,開始由最小值遞增;步驟3.5,當繪制暫停時,刷新界面,線程鎖定,進入等待喚醒階段,當再次開啟時,解除鎖定,重新開始繪制。在上述技術方案的基礎上,步驟4的具體步驟為:步驟4.1,繪制圓環(huán)形進度條深色背景;將進度分成四段:0-25%,26-50%,51-75%,76-100%,根據(jù)當前進度,將已完成的進度繪制為粗的圓弧,將未完成的進度繪制為細的圓弧,例如:進度值在0%-25%之間,就繪制右邊四分之一的圓弧為粗的圓弧,其他三段為細的圓弧,將已完成的進度使用亮色(例如黃色)的畫筆繪制,將未完成的進度使用深色畫筆繪制;步驟4.2,繪制圓環(huán)形進度條左右兩側(cè)的漸變圓弧,達到凹凸效果的展示;首先定義弧度漸變變量mgradient30_100,mgradient30_100=newsweepgradient(mcenterx,mcentery,newint[]{color_alpha_30,color_alpha_100,color_alpha_30,color_alpha_00,color_alpha_30},newfloat[]{0f,0.25f,0.5f,0.75f,1f});上述代碼所述漸變表示:圓環(huán)形的0弧度對應點的透明度是30,圓環(huán)形的90弧度對應點的透明度是100,圓環(huán)形的180弧度對應點的透明度是30,圓環(huán)形的270弧度對應點的透明度是0,圓環(huán)形的360弧度對應點的透明度是30;然后,設置畫筆的shader為角度漸變;mprogressoutpaint.setshader(mgradient30_100);再后,設置畫筆寬度,設置繪制區(qū)域為進度條內(nèi)外圓區(qū)域;步驟4.3,實現(xiàn)呼吸燈效果;首先設置200個模糊半徑過濾器,for(inti=0;i<(radius_filter_max+1);i++){marrayfilterblur[i]=newblurmaskfilter(i+1,blurmaskfilter.blur.outer);}再在線程中將模糊過濾器動態(tài)設置給畫筆對象,mpaintfilter.setmaskfilter(marrayfilterblur[filterradius]);在ondraw回調(diào)中使用畫筆繪制圓形,canvas.drawcircle(mcenterx,mcentery,moutfilterradius,mpaintfilter);這樣就能實現(xiàn)呼吸燈效果了;步驟4.4,繪制跟隨進度顯示的進度文字;首先設置進度文字為100%,獲取文字區(qū)域大小,再根據(jù)進度值計算旋轉(zhuǎn)的角度,繪制進度文字;例如可采用以下示例:在圓環(huán)形進度條上方繪制進度值為文字的區(qū)域,之所以使用100%的文字,是因為進度值大為100%,文字寬度最寬,其他進度值也是繪制再此區(qū)域,就能保證繪制完整了;之后計算出每個進度值對應偏移的角度progress_angle_step,需要根據(jù)進度條類型來調(diào)整,如果是間斷的環(huán)形進度條,需要將弧度減去間斷部分所占的弧度作為結(jié)果,除以100,就計算出步進值progress_angle_step了;再根據(jù)當前進度計算偏轉(zhuǎn)的角度、步進值和半徑,算出偏移的橫坐標和縱坐標,將進度值文字繪制到前一步計算出的區(qū)域即可;步驟4.5,繪制位于圓環(huán)形進度條中心的描述文字,當文字超過繪制的區(qū)域后,設置為向左勻速循環(huán)滾動;先確定文字顯示區(qū)域和圓環(huán)形進度條的左右距離,再確定文字寬度,當文字寬度超過文字顯示區(qū)域的寬度后,執(zhí)行滾動邏輯進行跑馬燈文字顯示,沒有超過就正常顯示。所述執(zhí)行滾動邏輯進行跑馬燈文字顯示,是指:超出寬度以后,只需要讓繪制文字的橫坐標逐漸減小即可,當移動到文字的寬度之后,從右邊開始繼續(xù)往左移動,期間要控制好橫坐標,以及第一次展示的時候,是顯示在左邊。在上述技術方案的基礎上,步驟5的具體步驟為:通過設置ispaused暫停標記,來控制界面進度的刷新,如果ispaused為true,表示執(zhí)行了暫停邏輯,繪制最后一幀界面,根據(jù)步驟3.1的mobject同步鎖進入線程等待流程,當設置ispaused標記為false以及執(zhí)行喚醒線程流程之后,界面重新開始繪制。本說明書中未作詳細描述的內(nèi)容屬于本領域?qū)I(yè)技術人員公知的現(xiàn)有技術。當前第1頁12當前第1頁12
當前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
乌什县| 胶州市| 佛山市| 上栗县| 新郑市| 虞城县| 星子县| 河南省| 化隆| 会昌县| 凤翔县| 玉门市| 砀山县| 华坪县| 专栏| 满城县| 温宿县| 平潭县| 成安县| 贵德县| 浮梁县| 富顺县| 视频| 嵊泗县| 靖远县| 荣昌县| 察哈| 元朗区| 和政县| 左贡县| 樟树市| 隆化县| 兰州市| 南康市| 纳雍县| 黔东| 双峰县| 马山县| 郓城县| 固安县| 隆昌县|