水平漸變進度條的實現

2021-08-11 10:27:58 字數 1620 閱讀 3232

最近在研究一些自定義繪製控制項,不可避免的會用到paint,gradient,

先貼**:

public class progressview1 extends view ;

private float mcursize;

public progressview1(context context)

public progressview1(context context, attributeset attrs)

public progressview1(context context, attributeset attrs, int defstyleattr)

@override

protected void onmeasure(int widthmeasurespec, int heightmeasurespec)

private void init()

@override

protected void ondraw(canvas canvas)

drawcurruntview(canvas);

}private void drawcurruntview(canvas canvas) else

} else else

positions[positions.length - 1] = 1.0f;//這一句跟上面兩句是

lineargradient shader = new lineargradient(3, 3, (mwidth - 3) * section, /mheight - /3,

colors, null, shader.tilemode.mirror);

mrecpaint.setshader(shader);

moutpaint.setshader(shader);

}

if (section == 0)  else 

}private void drawmaxview(canvas canvas)

public void setmaxcount(float maxcount)

/***

* 設定當前的進度值

* * @param currentcount

*/public void setcurrentcount(float currentcount)

1.首先,在控制項的onmeasure方法中

mwidth = getmeasuredwidth();

mheight = getmeasuredheight();

獲取到控制項的寬高然後根據寬高設定控制項的padding圓的半徑等等,簡而言之就是,初始化控制項的尺寸資訊

2.第二步,drawmaxview()方法繪進度條總得長度

3.第三步,drawcurruntview()方法,繪製當前進度,這裡用到了

lineargradient shader = new lineargradient(3, 3, (mwidth - 3) * section, /mheight - /3,

colors, null, shader.tilemode.mirror);

漸變渲染的乙個物件,設定了這個物件開始渲染和結束渲染的位置,通過這個物件達到進度條顏色漸變的效果

漸變進度條

用建立的方式來寫漸變的進度條 public class myprogressview extends viewgroup public myprogressview context context,attributeset attrs override protected void onlayout...

iOS 環形漸變進度條實現

之前有人在找漸變進度條的效果,閒來無事就順手寫了乙個,然後畫了檢視層級,方便講解。環境資訊 mac os x 10.10.3 xcode 6.3.1 ios 8.3 效果圖 正文 首先需要搞定的就是檢視層級關係。可以看到,1.背景是有透明度的藍色 blueview 2.需要乙個從綠 黃 紅的漸變色,...

canvas錐形漸變進度條

這一切需要從乙個 簡單 的需求開始,在最開始對設計第一眼看到這張圖的時候,感覺挺簡單的嘛,直接用echarts餅圖模擬出來乙個就好了 然後上echarts試了一下發現實現不出來了 設計圖這邊採用的是錐形漸變,而echarts只有線性漸變和徑向漸變。然後準備換種方案,css就有錐形漸變,然後通過con...