自定義圓形進度條

2021-07-25 10:00:44 字數 3655 閱讀 6981

首先在values檔案下面建立 attr.xml檔案

name="circleprogressbar">

name="ringcolor"

format="color" />

name="ridus"

format="dimension" />

name="ringwidth"

format="dimension" />

name="textsize"

format="dimension" />

declare-styleable>

resources>

然後建立自定義類circleprogressbar

package com.jufan.zhibo.customviewtext;

import android.content.context;

import android.content.res.typedarray;

import android.graphics.canvas;

import android.graphics.color;

import android.graphics.paint;

import android.graphics.point;

import android.graphics.rect;

import android.graphics.rectf;

import android.util.attributeset;

import android.view.view;

/** * 按照一定速率轉動的圓形進度條

* created by lg on 2016/12/15.

*/public

class

circleprogressbar

extends

view

/*** 畫筆

*/private paint mpaint = new paint();

/*** 當前進度

*/private

int currentrate;

/*** 上次draw的時間

*/private

long lastdrawtime;

/*** 中心的座標

*/point mcenterpoint = new point();

/*** 重新整理的頻率

*/private

int gaptime = 20;

private

int mtorate = 360;

private drawthread mdrawthread = new drawthread();

public

circleprogressbar(context context)

public

circleprogressbar(context context, attributeset attrs)

public

circleprogressbar(context context, attributeset attrs, int defstyle)

// }

setcolor(mringcolor);

attributes.recycle();

}@override

protected

void

onmeasure(int widthmeasurespec, int heightmeasurespec)

@override

protected

void

ondraw(canvas canvas)

public

void

setcolor(int color)

public

void

settextsize(int textsize)

public

intgettextsize()

public

void

finish()

public

void

finish(int duration)

void setcurrentrate(int torate)

void setcurrentrate(int torate, int duration)

void increase(int increment)

void increase(int increment, int duration)

public

void

speedup()

public

void

speeddown()

public

void

restart()

}private

class

drawthread

extends

thread catch (exception e)

currentrate += mincrement;

}postinvalidate();

currentrate = (currentrate > 360) ? 360 : currentrate;}}

}

在布局檔案中呼叫自定義的控制項

android:id="@+id/progressbar"

custom:ridus="30dp"

custom:ringwidth="5dp"

custom:ringcolor="#ff0000"

android:layout_width="60dp"

android:layout_height="60dp"/>

"match_parent"

android:layout_height="wrap_content"

android:orientation="horizontal">

"wrap_content"

android:layout_height="wrap_content"

android:text="start"

android:id="@+id/startbtn" />

"wrap_content"

android:layout_height="wrap_content"

android:text="減速"

android:id="@+id/stopbtn" />

"wrap_content"

android:layout_height="wrap_content"

android:text="加速"

android:id="@+id/increasebtn" />

"wrap_content"

android:layout_height="wrap_content"

android:text="字型變大"

android:id="@+id/increaselittlebtn" />

在主方法中開啟進度條,資料假設

private void initview() 

@override

public void onclick(view v)

}

自定義圓形進度條

author wangxiao public class roundprogressbar extends view public roundprogressbar context context,attributeset attrs public roundprogressbar context ...

自定義圓形進度條

之前做專案的時候有用到環形進度條,先是在網上找了一下第三方控制項,發現好用是好用,就是東西太多了,有點複雜,還不如自己寫乙個簡單點適合自己用的。先把自定義控制項的效果圖貼出來。其實我寫的這個控制項很簡單。索性就直接把原始碼貼出來吧。h檔案的內容就是一些宣告 import inte ce progre...

自定義圓形進度條

fromdegrees 動畫開始時的角度 todegrees 動畫結束時物件的旋轉角度,正代表順時針 pivotx 屬性為動畫相對於物件的x座標的開始位置 pivoty 屬性為動畫相對於物件的y座標的開始位置 duration 設定時間 android shape rectangle oval li...