成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

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

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

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

功能分析

雖然功能比較簡單,但是仍然需要仔細分析

     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é)之前還是看看最后的效果吧。

這是我自己做的一個定時鎖屏的項目,地址是這里是地址或者本地下載

這是這個項目運行鎖屏的時候的動圖(大家都喜歡動圖)

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

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

成都app開發(fā)公司
疏勒县| 马龙县| 宜丰县| 辛集市| 巩义市| 辰溪县| 安宁市| 灵宝市| 临湘市| 桦甸市| 张家港市| 嘉黎县| 沁阳市| 北票市| 荥经县| 东至县| 武乡县| 米易县| 延庆县| 濮阳县| 镇坪县| 阳城县| 东海县| 拉萨市| 孝昌县| 加查县| 天津市| 新建县| 浠水县| 柞水县| 华亭县| 井冈山市| 都江堰市| 澳门| 深州市| 石柱| 南皮县| 通榆县| 浑源县| 疏附县| 云林县|