Android自定義環形進度條

2021-06-29 10:50:54 字數 3983 閱讀 9113

/** * 主頁面

*@author 有點涼了

* */

public

class

mainactivity

extends

activity catch (interruptedexception e) }}

}).start();

}@override

public

boolean

oncreateoptionsmenu(menu menu)

@override

public

boolean

onoptionsitemselected(menuitem item)

return

super.onoptionsitemselected(item);}}

自定義頁面

package com.qiao.circleprogress_forexample;

import android.content.context;

import android.content.res.typedarray;

import android.graphics.canvas;

import android.graphics.color;

import android.graphics.paint;

import android.graphics.rectf;

import android.graphics.typeface;

import android.util.attributeset;

import android.util.log;

import android.view.view;

/** *@author 有點涼了

* */

public

class

roundprogressbar

extends

view

public

roundprogressbar(context context, attributeset attrs)

public

roundprogressbar(context context, attributeset attrs, int defstyle)

@override

protected

void

ondraw(canvas canvas)

/*** 畫圓弧 ,畫圓環的進度

*///設定進度是實心還是空心

paint.setstrokewidth(roundwidth); //設定圓環的寬度

paint.setcolor(roundprogresscolor); //設定進度的顏色

rectf oval = new rectf(centre - radius, centre - radius, centre

+ radius, centre + radius); //用於定義的圓弧的形狀和大小的界限

switch (style)

case fill:}}

public

synchronized

intgetmax()

/*** 設定進度的最大值

*@param max

*/public

synchronized

void

setmax(int max)

this.max = max;

}/**

* 獲取進度.需要同步

*@return

*/public

synchronized

intgetprogress()

/*** 設定進度,此為執行緒安全控制項,由於考慮多線的問題,需要同步

* 重新整理介面呼叫postinvalidate()能在非ui執行緒重新整理

*@param progress

*/public

synchronized

void

setprogress(int progress)

if(progress > max)

if(progress <= max)

}public

intgetcriclecolor()

public

void

setcriclecolor(int criclecolor)

public

intgetcricleprogresscolor()

public

void

setcricleprogresscolor(int cricleprogresscolor)

public

intgettextcolor()

public

void

settextcolor(int textcolor)

public

float

gettextsize()

public

void

settextsize(float textsize)

public

float

getroundwidth()

public

void

setroundwidth(float roundwidth)

}

布局:

""

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical" >

.qiao

.circleprogress_forexample.roundprogressbar

android:id="@+id/progressbar1"

android:layout_width="100dip"

android:layout_height="100dip"

/>

屬性

<?xml version="1.0" encoding="utf-8"?>

name="roundprogressbar">

name="roundcolor"

format="color"/>

name="roundprogresscolor"

format="color"/>

name="roundwidth"

format="dimension">

attr>

name="textcolor"

format="color" />

name="textsize"

format="dimension" />

name="max"

format="integer">

attr>

name="textisdisplayable"

format="boolean">

attr>

name="style">

name="stroke"

value="0">

enum>

name="fill"

value="1">

enum>

attr>

declare-styleable>

resources>

android 自定義 環形進度條

其實這個控制項很簡單,繼承view,在ondraw 中 繪製乙個圓和乙個圓弧即可,如下,對外暴露了乙個設定進度的方法,難點主要是數學計算 public class circleview extends view private void initvalues private void init ov...

android 簡單自定義環形進度條

一 通過動畫實現 定義res anim loading.xml如下 html view plain copy print?xml version 1.0 encoding utf 8 animation list android oneshot false xmlns android item an...

Android自定義進度條

1.新建自定義view horizontalprogressbarwithprogress,2.自定義屬性 values目錄下新建attrs.xml檔案,定義各種屬性,並且給進度條引用 3.定義一些預設值和單位轉換方法 private static final int default text si...