安卓 節點進度條NodeProgressBar

2022-06-29 05:00:11 字數 4334 閱讀 8236

安卓節點進度nodeprogressbar條如圖:

nodeprogressview.class 檔案**

import

android.content.context;

import

android.content.res.typedarray;

import

android.graphics.canvas;

import

android.graphics.color;

import

android.graphics.paint;

import

android.util.attributeset;

import

android.view.view;

public

class nodeprogressview extends

view ;

private string titles = ;

public

nodeprogressview(context context)

public

nodeprogressview(context context, attributeset attrs)

public nodeprogressview(context context, attributeset attrs, int

defstyleattr)

private

void

init()

@override

protected

void onmeasure(int widthmeasurespec, int

heightmeasurespec)

else

float

bgheight;

if (heightmode ==measurespec.exactly)

else

float left = getpaddingleft() +bgradius;

stopx = bgwidth -bgradius;

startx =left;

bgcentery = bgheight / 2;

}@override

protected

void

ondraw(canvas canvas)

private

void

drawtext(canvas canvas)

canvas.drawtext(title, startx + (i * interval), bgcentery +textpadding, bgpaint);}}

}}private

boolean iscontains(int

i) }

return status || i ==maxstep;

}private

void

drawprogress(canvas canvas)

canvas.drawline(lastleft, bgcentery, lastleft + interval *prostep, bgcentery, propaint);

for (int i = 0; i <= prostep; i++) }}

private

void

drawbg(canvas canvas) }}

/*** 進度設定**

@param

progress 已完成到哪部

* @param

maxstep 總步驟

* @param

nodes 需要顯示對應節

* @param

titles 步驟名稱

*/public

void initprogress(int progress, int

maxstep, integer nodes, string titles)

/*** 進度設定**

@param

progress 已完成到哪部

*/public

void setprogress(int

progress)

/*** 把密度轉換為畫素

*/private

int dip2px(context context, float

px)

/*** 得到裝置的密度

*/private

float

getscreendensity(context context)

}

attrs.xml 檔案**

<

declare-styleable

name

="progressviewh"

>

<

attr

name

="h_bg_radius"

format

="dimension"

/>

<

attr

name

="h_pro_radius"

format

="dimension"

/>

<

attr

name

="h_bg_width"

format

="dimension"

/>

<

attr

name

="h_bg_color"

format

="color"

/>

<

attr

name

="h_pro_width"

format

="dimension"

/>

<

attr

name

="h_pro_color"

format

="color"

/>

<

attr

name

="h_text_padding"

format

="dimension"

/>

<

attr

name

="h_max_step"

format

="integer"

/>

<

attr

name

="h_text_size"

format

="dimension"

/>

<

attr

name

="h_text_color"

format

="color"

/>

<

attr

name

="h_pro_step"

format

="integer"

/>

declare-styleable

>

控制項用法

<

nodeprogressview

android:id

="@+id/progress"

android:layout_width

="match_parent"

android:layout_height

="113dp"

android:paddingstart

="20dp"

="#a4a6a8"

="8dp"

="10dp"

="20"

="#48b46c"

='8dp'

="8"

="10dp"

="20dp"

="12sp"

/>

/**

* 進度設定

** @param progress 已完成到哪一步

* @param maxstep 總步驟

* @param nodes 需要顯示對應節

* @param titles 步驟名稱

*/viewbinding.progress.initprogress(bean.clocknum, bean.dayslist[bean.dayslist.size - 1], bean.dayslist.totypedarray(), titles.totypedarray())

安卓帶節點進度條 自定義控制項

類似於這種進度條 其實這種進度條可以不用自定義view畫,可以利用現有的控制項組合成乙個控制項,其實就是乙個橫線,加上三個圓形的控制項,這裡你可以設定成按鈕,也可以是都可以。一下是 android layout width match parent android layout height 1dp...

安卓跨介面顯示進度條

在專案中推進中需要新增介面和介面之間的進度條顯示,這裡給出寫法。這裡假設頁面1跳轉到頁面2,先給出 結合 給出解釋 以下為頁面1中的關鍵 其中需要提前定義靜態進度條變數p,private static progressdialog p final handler handler2 new handl...

進度條,步驟條,

1,記錄一次步驟條來實現人數不同顯示的進度不同 效果如圖 廢話不多說 上 html檔案 已有 位武魂使共赴蒼嵐 3w預約 5w預約 10w預約 20w預約 30w預約 css awards progress awards progress cur awards progress cur.item0 ...