最近在研究一些自定義繪製控制項,不可避免的會用到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...