欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android自定義View實(shí)現(xiàn)圓形進(jìn)度條

 更新時(shí)間:2022年06月29日 16:28:10   作者:360度旋轉(zhuǎn)的貓  
這篇文章主要為大家詳細(xì)介紹了Android自定義View實(shí)現(xiàn)圓形進(jìn)度條,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了Android自定義View實(shí)現(xiàn)圓形進(jìn)度條的具體代碼,供大家參考,具體內(nèi)容如下

原理非常簡(jiǎn)單,在自定義View的基礎(chǔ)上使用Canvas的drawCircle畫兩個(gè)圓,一個(gè)圓代表總體,一個(gè)圓代表現(xiàn)有進(jìn)度,在主線程中使用set方法在Handler中傳遞進(jìn)度,進(jìn)度和總體都可以添加set、get方法進(jìn)行自定義

//主線程代碼如下

public class MainActivity extends Activity {
private Button mBtn_start;
private MyProgresscircle myProgresscircle;
private int progress;
private Handler handler=new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what){
case 0:
progress++;
if(progress<=100){//形成循環(huán)
myProgresscircle.setCurrentProgress(progress);//傳遞進(jìn)度
handler.sendEmptyMessageDelayed(0,200);//模擬下載延遲
? ? ? ? ? ? ? ? ? ? }
break;
? ? ? ? ? ? }
? ? ? ? }
? ? };

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
? ? ? ? setContentView(R.layout.activity_main);
myProgresscircle= (MyProgresscircle) findViewById(R.id.myprogress);
mBtn_start= (Button) findViewById(R.id.button_start);
mBtn_start.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
handler.sendEmptyMessage(0);//啟動(dòng)下載發(fā)送一個(gè)空消息開始
? ? ? ? ? ? }
? ? ? ? });
? ? }
}

//自定義View代碼:

public class MyProgresscircle extends View {
private int width;
private int height;
private Paint mPaintText;
private Paint mPaintCircle;
private Paint mPaintCircleCurrent;
private int CurrentProgress;
private int MaxProgress=100;

public void setCurrentProgress(int currentProgress) {

CurrentProgress = currentProgress;
? ? ? ? invalidate();
? ? }

public int getMaxProgress() {
return MaxProgress;
? ? }

public void setMaxProgress(int maxProgress) {
MaxProgress = maxProgress;
? ? }

public MyProgresscircle(Context context) {
super(context);
? ? }

public MyProgresscircle(Context context, AttributeSet attrs) {
super(context, attrs);
mPaintText=new Paint();//字體進(jìn)度畫筆
mPaintText.setTextSize(80);
mPaintText.setColor(Color.WHITE);
mPaintText.setStrokeWidth(10);
mPaintText.setTextAlign(Paint.Align.CENTER);//偏移

mPaintCircle=new Paint();//外圓畫筆
mPaintCircle.setColor(Color.GRAY);
mPaintCircle.setAntiAlias(true);
mPaintCircle.setStrokeWidth(10);

mPaintCircleCurrent=new Paint();//進(jìn)度圓畫筆
mPaintCircleCurrent.setColor(Color.YELLOW);
mPaintCircleCurrent.setAntiAlias(true);
mPaintCircleCurrent.setStrokeWidth(10);
? ? }

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {//這個(gè)復(fù)寫方法用來(lái)得到寬和高
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
width = getDefaultSize(getSuggestedMinimumWidth(), widthMeasureSpec);
height = getDefaultSize(getSuggestedMinimumHeight(), heightMeasureSpec);
? ? ? ? setMeasuredDimension(width, height);
? ? }

@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
? ? ? ? canvas.drawCircle(width / 2, height / 2, 200, mPaintCircle);
? ? ? ? canvas.drawCircle(width/2,height/2,CurrentProgress/100f*200,mPaintCircleCurrent);
? ? ? ? canvas.drawText(CurrentProgress*100f/MaxProgress+"%",width/2,height/2,mPaintText);//把進(jìn)度轉(zhuǎn)化為百分比
? ? }
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論