欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

怎么在Android中通過自定義View實(shí)現(xiàn)一個(gè)環(huán)形進(jìn)度條效果-創(chuàng)新互聯(lián)

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

公司主營業(yè)務(wù):網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站制作、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。成都創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來驚喜。成都創(chuàng)新互聯(lián)推出朝陽縣免費(fèi)做網(wǎng)站回饋大家。

功能分析

雖然功能比較簡單,但是仍然需要仔細(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)圖)

怎么在Android中通過自定義View實(shí)現(xiàn)一個(gè)環(huán)形進(jìn)度條效果

代碼實(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)

成都app開發(fā)公司