首先在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...