1. 程式人生 > >ProgressBar(進度條)-自定義圓形進度條

ProgressBar(進度條)-自定義圓形進度條

相信你看完2會吐槽,臥槽,這麼坑爹,拿個動畫來坑人,哈哈,實際開發中都這樣,當然上述這種情況只適用於不用顯示進度的場合,如果要顯示進度的場合就沒用處了,好吧,接下來看下網上一個簡單的自定義圓形進度條!程式碼還是比較簡單,容易理解,又興趣可以看看,或者進行相關擴充套件~

執行效果圖:

實現程式碼:

自定義View類:

/**
 * Created by Jay on 2015/8/5 0005.
 */publicclassCirclePgBarextendsView{privatePaint mBackPaint;privatePaint mFrontPaint;privatePaint mTextPaint
;privatefloat mStrokeWidth =50;privatefloat mHalfStrokeWidth = mStrokeWidth /2;privatefloat mRadius =200;privateRectF mRect;privateint mProgress =0;//目標值,想改多少就改多少privateint mTargetProgress =90;privateint mMax =100;privateint mWidth;privateint mHeight;publicCirclePgBar(Context context){super(context); init
();}publicCirclePgBar(Context context,AttributeSet attrs){super(context, attrs); init();}publicCirclePgBar(Context context,AttributeSet attrs,int defStyleAttr){super(context, attrs, defStyleAttr); init();}//完成相關引數初始化privatevoid init(){ mBackPaint =newPaint(); mBackPaint
.setColor(Color.WHITE); mBackPaint.setAntiAlias(true); mBackPaint.setStyle(Paint.Style.STROKE); mBackPaint.setStrokeWidth(mStrokeWidth); mFrontPaint =newPaint(); mFrontPaint.setColor(Color.GREEN); mFrontPaint.setAntiAlias(true); mFrontPaint.setStyle(Paint.Style.STROKE); mFrontPaint.setStrokeWidth(mStrokeWidth); mTextPaint =newPaint(); mTextPaint.setColor(Color.GREEN); mTextPaint.setAntiAlias(true); mTextPaint.setTextSize(80); mTextPaint.setTextAlign(Paint.Align.CENTER);}//重寫測量大小的onMeasure方法和繪製View的核心方法onDraw()@Overrideprotectedvoid onMeasure(int widthMeasureSpec,int heightMeasureSpec){super.onMeasure(widthMeasureSpec, heightMeasureSpec); mWidth = getRealSize(widthMeasureSpec); mHeight = getRealSize(heightMeasureSpec); setMeasuredDimension(mWidth, mHeight);}@Overrideprotectedvoid onDraw(Canvas canvas){ initRect();float angle = mProgress /(float) mMax *360; canvas.drawCircle(mWidth /2, mHeight /2, mRadius, mBackPaint); canvas.drawArc(mRect,-90, angle,false, mFrontPaint); canvas.drawText(mProgress +"%", mWidth /2+ mHalfStrokeWidth, mHeight /2+ mHalfStrokeWidth, mTextPaint);if(mProgress < mTargetProgress){ mProgress +=1; invalidate();}}publicint getRealSize(int measureSpec){int result =1;int mode =MeasureSpec.getMode(measureSpec);int size =MeasureSpec.getSize(measureSpec);if(mode ==MeasureSpec.AT_MOST || mode ==MeasureSpec.UNSPECIFIED){//自己計算 result =(int)(mRadius *2+ mStrokeWidth);}else{ result = size;}return result;}privatevoid initRect(){if(mRect ==null){ mRect =newRectF();int viewSize =(int)(mRadius *2);int left =(mWidth - viewSize)/2;int top =(mHeight - viewSize)/2;int right = left + viewSize;int bottom = top + viewSize; mRect.set(left, top, right, bottom);}}}

然後在佈局檔案中加上:

<com.jay.progressbardemo.CirclePgBarandroid:layout_width="match_parent"android:layout_height="match_parent"/>

就是這麼簡單~

相關推薦

ProgressBar(進度)定義圓形進度

相信你看完2會吐槽,臥槽,這麼坑爹,拿個動畫來坑人,哈哈,實際開發中都這樣,當然上述這種情況只適用於不用顯示進度的場合,如果要顯示進度的場合就沒用處了,好吧,接下來看下網上一個簡單的自定義圓形進度條!程式碼還是比較簡單,容易理解,又興趣可以看看,或者進行相關擴充套件~

Android 三種常用實現定義圓形進度 ProgressBar 及demo

           Android 自定義 進度條,一般有三種方式,最早一般使用UI給的圖片使用幀動畫,完成,後面兩種,一種是使用自定義顏色,另外一種是使用帶相近色的圖片加動畫完成。 下面具體 說一下三種方式,推薦使用第二種方式,如果這種達不到效果,或者比較高也可使用第一

定義圓形進度ProgressBar的三種方式

進度條預設是不確定(indeterminate=true)Android進度條 Android進度條有4種風格可以使用。 預設值是progressBarStyle。 設定成progressBarStyleSmall後,圖示變小。 設定成progressBarStyleLarge後,圖示變大 設定成progr

【Android進度】三種方式實現定義圓形進度ProgressBar

總結了3種方法: 1.多張圖片切換 2.自定義顏色 3.旋轉自定義圖片 其它: Android自定義控制元件NumberCircleProgressBar(圓形進度條)的實現:點選開啟連結 橫線帶數字進度條:點選開啟連結

定義圓形進度

CircleBarView package wanghuiqi.bawie.com.whq_yk_moni1.model; import android.animation.ValueAnimator; import android.content.Contex

定義圓形進度(一)

由於專案需要,需要自定義一個圓形進度條,效果如下: 1 建立什麼檔案? 具體的程式碼我會放在github上,所以暫時忽略attr檔案和activity_main2檔案 2 CustomCircleProgressBar packa

android定義圓形進度,實現動態畫圓效果

自定義圓形進度條效果圖如下:應用場景如動態顯示分數等。 view的自定義屬性如下attr.xml <?xml version="1.0" encoding="UTF-8"?> <resources> <declare-style

Android之定義圓形進度

在Android開發中,對於進度條想必大家不會陌生。例如,應用在執行一個耗時操作時,會通過展示一個進度條來顯示“載入中...”的動畫作為友好頁面以提高使用者體驗。對於這樣的進度條,最簡單的實現方式就是通過美工給我們切幾張不同的圖片,最後通過幀動畫的方式來實現。通過幀動

Android定義圓形進度實現程式碼

基本思路是這樣的: 1.首先繪製一個實心圓 2.繪製一個白色實心的正方形,遮住實心圓 3.在圓的中心動態繪製當前進度的百分比字元 4.繪製一個與之前實心圓相同顏色的空心圓 5.逐漸改變當前的百分比 6.根據百分比,逐漸改變正方形的大小,逐漸減小正方形的底部y軸的座標,不斷重繪

定義View之簡單定義圓形進度

達到的效果如下: 從上面的效果可以看出,主要有以下幾個自定義屬性: 1、背景顏色 2、進度扇形顏色 3、半徑 4、起始角度 因此,在attrs.xml中定義如下屬性: <?xml version="1.0" encoding="utf-8

Android定義圓形進度

前言: 看到別人寫的那些個酷炫的動畫,心裡癢癢的,於是,自己就開始了自定義View的探索之路。如果對自定義View還不是很熟,在看我這篇文章之前,我覺得你最好先看這篇文章: 自定義View,有這一篇就夠了。 正好公司有這樣一個需求:

一步一步帶你實現定義圓形進度(詳解)

        每次看到別人做出炫酷的都會想,這個應該很難吧?這是心理上先入為主的就這麼認為了,其實實現很簡單,下面一步一步的詳細剖析自定義圓形進度條的步驟。 首先看效果圖: 篇幅有點長,耐心看完肯定get新技能。 看每一個檢視都包含了些什麼。 最

Android 定義圓形進度(圓環刻度)View

這個也剛好是公司軟體最近的需求需要到的,當初最早的版本是使用美工切好的圖,在上面的基礎上覆蓋一層背景,但多多少少的有些瑕疵。於是就自己自定義寫了一個View實現 效果圖 一、繪製圓環 圓環故名思意,第一個首先繪製是圓環 1:圓環繪製函式

定義圓形進度控制元件,及圓形漸變顏色實現

package com.xxx.views; import android.content.Context; import android.content.res.TypedArray; import android.graphics.Canvas; import android.graphics.Colo

android 定義圓形進度(一)

現在app越來越要求介面很炫,比如一個載入資料的時候,通常是一個進度條在一直轉,直到從伺服器上獲取到資料,進度條才消失,而大部分都不會使用android自帶的進度條,因為不美,比如下面的進度條咋樣: 其實這個藍色背景是跟著進度條的進度顏色會發生改變,因為沒有找到哪種動態類

【Unity】-UIGI簡易血的製作,環形血,不規則血定義圖形血的製作

                           利用UIGI製作的簡易的自定義圖形血條 目錄 5.結語 1.效果展示                                                    

定義view,可拖拽進度和吸附效果的圓形進度

前言 最近接到一個需求,第一眼看到ui互動效果時,瞬間想對產品小哥說“尼瑪,這麼會玩,你咋不上天”。確認了具體互動細節,喝了兩口農夫三拳,開始了兩耳不聞窗外事,一心只想擼程式碼的過程。 先上ui效果 說明: 外圈弧形上面是進度的標記點,預設在12點位置,也是

定義圓形progressbar(包含進度動畫效果)

效果圖敬上:) attrs檔案: < resources> < declare-styleable name=”CircleProgressBarStyle”> <

定義Android進度ProgressBar顏色的漸變設定

一、在drawable資料夾中新建my_progressbar.xml檔案 <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.c

定義一個進度為圓角的progressbar

package com.xctz.niceman.customcanvas; import android.content.Context; import android.content.res.TypedArray; import android.graphics.Canvas; import andro