Android自定義帶加載動畫效果的環(huán)狀進(jìn)度條

最近閑來無事,自定義了一個環(huán)狀進(jìn)度條,話不多說直接上代碼 :

我們一直強(qiáng)調(diào)做網(wǎng)站、網(wǎng)站建設(shè)對于企業(yè)的重要性,如果您也覺得重要,那么就需要我們慎重對待,選擇一個安全靠譜的網(wǎng)站建設(shè)公司,企業(yè)網(wǎng)站我們建議是要么不做,要么就做好,讓網(wǎng)站能真正成為企業(yè)發(fā)展過程中的有力推手。專業(yè)網(wǎng)站制作公司不一定是大公司,創(chuàng)新互聯(lián)公司作為專業(yè)的網(wǎng)絡(luò)公司選擇我們就是放心。

public class CircleProgressView extends View{
  private Paint mCirPaint;
  private Paint mArcPaint;
  private Paint mTextPaint;
  private float radius=200;
  private int textsize=60;
  private int progress=68;
  private int stokeWidth=10;
  private int circleColor=Color.GRAY;
  private int arcColor=Color.GREEN;
  private int textColor=Color.BLACK;
  private int speed=0;
  public CircleProgressView(Context context) {
    super(context);
  }

  public CircleProgressView(Context context, AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
  }

  public CircleProgressView(Context context, AttributeSet attrs) {
    super(context, attrs);
  }

  public void setRadius(float radius){
    this.radius=radius;
    invalidate();
  }

  public void setTextSize(int textsize){
    this.textsize=textsize;
    invalidate();
  }

  public void setProgress(int progress){
    this.progress=progress;
  }

  public void setStokewidth(int stokeWidth){
    this.stokeWidth=stokeWidth;
    invalidate();
  }

  public void setColor(int circleColor,int arcColor,int textColor){
    this.circleColor=circleColor;
    this.arcColor=arcColor;
    this.textColor=textColor;
    invalidate();
  }

  public void setSpeed(int speed){
    this.speed=speed;
  }

  private void init() {
    mCirPaint=new Paint();
    mCirPaint.setColor(circleColor);
    mCirPaint.setAntiAlias(true);
    mCirPaint.setStyle(Paint.Style.STROKE);
    mCirPaint.setStrokeWidth(stokeWidth);

    mArcPaint=new Paint();
    mArcPaint.setColor(arcColor);
    mArcPaint.setAntiAlias(true);
    mArcPaint.setStyle(Paint.Style.STROKE);
    mArcPaint.setStrokeWidth(stokeWidth);

    mTextPaint=new Paint();
    mTextPaint.setColor(textColor);
    mTextPaint.setTextSize(textsize);
    mTextPaint.setAntiAlias(true);
  }

  @Override
  protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    init();
    float centerX=getWidth()/2;
    float centerY=getHeight()/2;
    canvas.drawCircle(centerX,centerY,radius,mCirPaint);
    canvas.drawArc(centerX-radius,centerY-radius,centerX+radius,centerY+radius,-90,progress*360/100,false,mArcPaint);
    canvas.drawText(progress+"%",centerX-(mTextPaint.measureText(progress+"%"))/2,centerY+textsize/2,mTextPaint);
  }

  @Override
  protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    if (speed!=0){
      startProgress();
    }
  }

  public void startProgress(){
    final int preProgress=progress;
    new CountDownTimer(preProgress * speed, speed) {
      @Override
      public void onTick(long l) {
        setProgress(preProgress-(int) (l/speed));
        invalidate();
      }

      @Override
      public void onFinish() {
        setProgress(preProgress);
        invalidate();
        this.cancel();
      }
    }.start();
  }

}

相關(guān)用法:
setProgress(progress);//設(shè)置進(jìn)度
setRadius(300);//設(shè)置半徑
setStokewidth(60);//設(shè)置環(huán)寬
setTextSize(80);//設(shè)置文字進(jìn)度大小
setColor(Color.GRAY,Color.RED,Color.BLUE);//設(shè)置顏色(環(huán)的顏色,進(jìn)度條的顏色,文字進(jìn)度的字體顏色)
setSpeed(20);//設(shè)置動畫速度,這里的數(shù)值是每次進(jìn)度加一所用時間,所以數(shù)值越小動畫速度越快

測試代碼:

  mCircleProgressView= (CircleProgressView) findViewById(R.id.circle_progress);
    mCircleProgressView.setProgress(progress);
    mCircleProgressView.setRadius(300);
    mCircleProgressView.setStokewidth(60);
    mCircleProgressView.setTextSize(80);
    mCircleProgressView.setColor(Color.GRAY,Color.RED,Color.BLUE);
    mCircleProgressView.setSpeed(20);

測試效果

Android自定義帶加載動畫效果的環(huán)狀進(jìn)度條

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。

文章題目:Android自定義帶加載動畫效果的環(huán)狀進(jìn)度條
文章鏈接:http://muchs.cn/article6/pgdeog.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄網(wǎng)站排名、外貿(mào)網(wǎng)站建設(shè)網(wǎng)站內(nèi)鏈、靜態(tài)網(wǎng)站網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)