這篇文章給大家介紹怎么在Android中通過自定義View實現(xiàn)一個環(huán)形進度條效果,內(nèi)容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
功能分析
雖然功能比較簡單,但是仍然需要仔細分析
1.圖標(biāo)外還有一圈圓圈,可以設(shè)置寬度
2.圓形進度條和進度條底部,可以設(shè)置寬度,顏色等
3.內(nèi)部有一個圓形圖片,可旋轉(zhuǎn)
實現(xiàn)思路分析
1.可以設(shè)置寬度的圓圈
這個比較容易,直接在onDraw方法中使用canvas繪制即可,當(dāng)然,在間距和半徑的處理上需要仔細,控件本體其實還是一個長方形,我們需要選取較短的那一邊作為直徑,同時也要處理內(nèi)部的padding
2.圓形進度條和進度條底部,可以設(shè)置寬度,顏色等
這個可以用canvas的drawArc方法來實現(xiàn),通過繪制不同長度的弧形來達到顯示進度的目的,但是需要注意的是,我們需要計算好弧形的半徑以及開始和結(jié)束點。
3.內(nèi)部有一個圓形圖片,可旋轉(zhuǎn)
這個需求可以分為三個部分,有圖片,圓形,可以旋轉(zhuǎn)
先說有圖,很簡單,canvas的drawbitmap方法繪制(canvas真是好東西)
再說圓形,這就比較復(fù)雜了,但是整體來說依然是使用canvas來對bitmap進行操作,會在代碼中細說
最后是可以旋轉(zhuǎn),我們可以通過canvas的rotate方法來做。
效果展示
說了這么多,那么最后的效果是怎樣的呢?畢竟空口無憑,在進入代碼展示的環(huán)節(jié)之前還是看看最后的效果吧。
這是我自己做的一個定時鎖屏的項目,地址是這里是地址或者本地下載
這是這個項目運行鎖屏的時候的動圖(大家都喜歡動圖)
代碼實現(xiàn)
下面開始展示代碼,并加以分析
我們主要的工作是在一個自定義的view中的onDraw方法實現(xiàn)的,所以,我們需要有一個繼承View類的子類,我們就叫他MyProgress吧
我們展示的就是這個MyProgress的onDraw方法
1.可以設(shè)置寬度的圓圈
很簡單,我們只需要調(diào)用canvas的drawCircle方法即可,但是需要注意對padding的處理,因為不處理就會無效
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; //計算半徑,選取長寬中短的那個做處理,boundWidth是圓圈的寬度,progressWidth是進度條的寬度 //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; //計算圓的中心點 canvas.drawCircle(centerX,centerY, radiu, paint); //繪制圓形
當(dāng)前文章:怎么在Android中通過自定義View實現(xiàn)一個環(huán)形進度條效果-創(chuàng)新互聯(lián)
鏈接地址:http://jinyejixie.com/article20/digijo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航、網(wǎng)站維護、建站公司、電子商務(wù)、面包屑導(dǎo)航、Google
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容