


下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
【移動應(yīng)用開發(fā)技術(shù)】Android自定義WaveProgressView實(shí)現(xiàn)水波紋加載需求
先看效果圖:你可以定義成你項(xiàng)目的logo圖片,可以設(shè)置水波顏色、波長、波寬、字體大小、顏色、進(jìn)度條的最大值,當(dāng)前進(jìn)度值,還可以設(shè)置波紋震動的快慢。當(dāng)設(shè)置一個進(jìn)度不變的時(shí)候,打開時(shí)還有一個動畫填滿的效果(比如第二個流量顯示,這里圖片沒有截出這個效果)。源碼地址1.如何使用1.1在布局文件中添加自定義控件:說明,這里的android:background定義的是控件的形狀,比如上面的圓形和美女,你可用shape.xml定義形狀圖片。比如,這是一個圓也可以直接給android:background設(shè)置一張圖片,比如:這里注意透明像素,還有為了圖片縮放的時(shí)候不變形,建議背景(不管是圖片還是圖形)為正方形。1.2在代碼中你可以選擇進(jìn)行如下設(shè)置:2.代碼實(shí)現(xiàn)這里實(shí)現(xiàn)主要用到的知識有自定義view、PorterDuffXfermode和二階貝塞爾曲線,不太清楚的可以在我博客找找,都有的。
首先自定義WaveProgressView繼承View,在構(gòu)造函數(shù)中獲取布局文件中設(shè)置的背景,同時(shí)設(shè)置一個畫波浪的畫筆和畫文字的畫筆。復(fù)寫onDraw方法,先把波浪畫在畫布上,然后畫背景(給背景畫筆設(shè)置PorterDuff.Mode.DST_ATOP模式:取上層非交集部分與下層交集部分)。當(dāng)然也可以是PorterDuff.Mode.SRC_ATOP,主要取決于你畫的先后順序。最后把文字畫上去,形成一個最終Bitmap,最后把這個Bitmap畫到onDraw的參數(shù)canvas上。這里的CurY是上次波浪中線的y軸坐標(biāo),CurMidY是當(dāng)前的Y軸坐標(biāo),每次波浪上升的時(shí)候?yàn)榱瞬划a(chǎn)生卡頓效果,把這1/100的上升分為10次來繪制。
distance是x軸的偏移量,為了使水波動起來,每次繪制時(shí)都要向左進(jìn)行一段偏移。每次偏移距離為半波寬度/波浪震動速度,因?yàn)橐粋€波是4個半波寬度形成一個循環(huán),然后又回到最開始x位置開始循環(huán)位移。
根據(jù)view的寬度計(jì)算出一共要繪制多少個波形出來,同時(shí)多加一個波為了向左平移。每次繪制以波形的左邊點(diǎn)、波形的右邊點(diǎn)、view的左下角、view的右下角、形成一個圖片把它繪制到內(nèi)存中新建的和view同大小的canvas上。先對背景圖形進(jìn)行縮放再繪制到canvas上,這里的縮放是按最小邊進(jìn)行縮放。最后把文字繪制上去,注意我們在初始化中設(shè)置了畫筆,為了能通過代碼設(shè)置文字的顏色,要把設(shè)置文字畫筆顏色和大小放在onDraw方法中。為了使波浪動起來,使用handler循環(huán)調(diào)用invalidate刷新界面。同時(shí)應(yīng)該在構(gòu)造函數(shù)打開handler循
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 汽車知識報(bào)告范文
- 二零二五年度碎石場安全生產(chǎn)監(jiān)管服務(wù)合同
- 二零二五年度屋頂光伏電站委托租賃管理合同
- 宜昌水電工程安全風(fēng)險(xiǎn)評估與應(yīng)急預(yù)案編制合同(2025年度)
- 二零二五年度遺產(chǎn)繼承遺產(chǎn)分割協(xié)議
- 二零二五年度智能化沙石運(yùn)輸管理服務(wù)協(xié)議
- 2025年度離婚后子女學(xué)業(yè)支持協(xié)議
- 二零二五年度家教兼職合同與家長溝通規(guī)范
- 二零二五年度高校畢業(yè)生就業(yè)實(shí)習(xí)補(bǔ)貼結(jié)算跟蹤三方協(xié)議書
- 二零二五年度高端定制服裝品牌區(qū)域代理合作協(xié)議
- 2024年度供應(yīng)商管理培訓(xùn)課件
- 6、水平四+田徑18課時(shí)大單元計(jì)劃-《雙手頭上前擲實(shí)心球》
- 《審計(jì)課件東北財(cái)經(jīng)大學(xué)會計(jì)系列教材》課件
- 中國老年危重患者營養(yǎng)支持治療指南2023解讀課件
- 《管理信息系統(tǒng)》考試復(fù)習(xí)題庫(含答案)
- 《光伏電站運(yùn)行與維護(hù)》試題及答案一
- 人教版初中全部英語單詞表
- 2024年浙江省中考社會試卷真題(含標(biāo)準(zhǔn)答案及評分標(biāo)準(zhǔn))
- 2024年貴州省高職(??疲┓诸惪荚囌惺罩新毊厴I(yè)生文化綜合考試語文試題
- 一年級體育教案全冊(水平一)下冊
- 全身麻醉后護(hù)理常規(guī)
評論
0/150
提交評論