這篇文章給大家介紹怎么在Android中通過自定義View實(shí)現(xiàn)一個(gè)環(huán)形進(jìn)度條效果,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。

功能分析
雖然功能比較簡單,但是仍然需要仔細(xì)分析
1.圖標(biāo)外還有一圈圓圈,可以設(shè)置寬度
2.圓形進(jìn)度條和進(jìn)度條底部,可以設(shè)置寬度,顏色等
3.內(nèi)部有一個(gè)圓形圖片,可旋轉(zhuǎn)
實(shí)現(xiàn)思路分析
1.可以設(shè)置寬度的圓圈
這個(gè)比較容易,直接在onDraw方法中使用canvas繪制即可,當(dāng)然,在間距和半徑的處理上需要仔細(xì),控件本體其實(shí)還是一個(gè)長方形,我們需要選取較短的那一邊作為直徑,同時(shí)也要處理內(nèi)部的padding
2.圓形進(jìn)度條和進(jìn)度條底部,可以設(shè)置寬度,顏色等
這個(gè)可以用canvas的drawArc方法來實(shí)現(xiàn),通過繪制不同長度的弧形來達(dá)到顯示進(jìn)度的目的,但是需要注意的是,我們需要計(jì)算好弧形的半徑以及開始和結(jié)束點(diǎn)。
3.內(nèi)部有一個(gè)圓形圖片,可旋轉(zhuǎn)
這個(gè)需求可以分為三個(gè)部分,有圖片,圓形,可以旋轉(zhuǎn)
先說有圖,很簡單,canvas的drawbitmap方法繪制(canvas真是好東西)
再說圓形,這就比較復(fù)雜了,但是整體來說依然是使用canvas來對(duì)bitmap進(jìn)行操作,會(huì)在代碼中細(xì)說
最后是可以旋轉(zhuǎn),我們可以通過canvas的rotate方法來做。
效果展示
說了這么多,那么最后的效果是怎樣的呢?畢竟空口無憑,在進(jìn)入代碼展示的環(huán)節(jié)之前還是看看最后的效果吧。
這是我自己做的一個(gè)定時(shí)鎖屏的項(xiàng)目,地址是這里是地址或者本地下載
這是這個(gè)項(xiàng)目運(yùn)行鎖屏的時(shí)候的動(dòng)圖(大家都喜歡動(dòng)圖)

代碼實(shí)現(xiàn)
下面開始展示代碼,并加以分析
我們主要的工作是在一個(gè)自定義的view中的onDraw方法實(shí)現(xiàn)的,所以,我們需要有一個(gè)繼承View類的子類,我們就叫他MyProgress吧
我們展示的就是這個(gè)MyProgress的onDraw方法
1.可以設(shè)置寬度的圓圈
很簡單,我們只需要調(diào)用canvas的drawCircle方法即可,但是需要注意對(duì)padding的處理,因?yàn)椴惶幚砭蜁?huì)無效
super.onDraw(canvas); //需要在函數(shù)開始的地方調(diào)用父類的onDraw final int paddingLeft = getPaddingLeft(); final int paddingRight = getPaddingRight(); final int paddingTop = getPaddingTop(); final int paddingBottom = getPaddingBottom(); //獲取padding //get the view's width and height and decide the radiu int width = getWidth() - paddingLeft - paddingRight; int height = getHeight() - paddingTop - paddingBottom; radiu = Math.min(width , height) / 2 - boundWidth - progressWidth; //計(jì)算半徑,選取長寬中短的那個(gè)做處理,boundWidth是圓圈的寬度,progressWidth是進(jìn)度條的寬度 //setup the paint paint.setStyle(Paint.Style.STROKE); //設(shè)置paint為畫輪廓 paint.setStrokeWidth(boundWidth); //設(shè)置寬度 paint.setColor(Color.BLACK); //設(shè)置顏色 //draw the inner circle int centerX = paddingLeft + getWidth()/2; int centerY = paddingTop + getHeight() / 2; //計(jì)算圓的中心點(diǎn) canvas.drawCircle(centerX,centerY, radiu, paint); //繪制圓形
當(dāng)前文章:怎么在Android中通過自定義View實(shí)現(xiàn)一個(gè)環(huán)形進(jìn)度條效果-創(chuàng)新互聯(lián)
鏈接地址:http://chinadenli.net/article20/digijo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航、網(wǎng)站維護(hù)、建站公司、電子商務(wù)、面包屑導(dǎo)航、Google
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容