作者簡介? 原創(chuàng)微信公眾號(hào)郭霖 WeChat ID: guolin_blog
又到周五啦,提前祝大家周末愉快!
本篇來自smily的投稿,分享了一個(gè)自定義折線圖控件,效果很不錯(cuò),感興趣的朋友可以看一看。
smily的博客地址:
http://blog.csdn.net/qq_20521573
正文
首先看下要實(shí)現(xiàn)的效果圖,動(dòng)態(tài)圖片錄制效果不好,漸變顏色沒有完全顯示出來,以至于下半部分漸變色變成了白色。
折線圖的繪制主要有一下幾個(gè)步驟。
一、定義 LineChartView類 并繼承 View。
二、添加自定義屬性。以在 value目錄 下創(chuàng)建 attrs.xml 文件,文件中我們可以定義一些用到的屬性,比如折線顏色、字體大小等屬性。文件內(nèi)容如下:
接下來在 LineChartView 的構(gòu)造方法中解析自定義屬性的值并做相應(yīng)的處理。在構(gòu)造方法里還初始化了 漸變顏色、折線數(shù)據(jù)的List集合 以及 初始化畫筆 等操作代碼如下:
另外,折現(xiàn)數(shù)據(jù)需要實(shí)體類,實(shí)體類可直接添加到 LineChartView 內(nèi)部。如下:
三、初始化畫筆和路徑。代碼如下:
四、重寫 onLayout方法。在 onLayout方法 中獲取控件的寬高、初始化原點(diǎn)坐標(biāo)以及設(shè)置控件的背景。代碼如下:
五、重寫onDraw方法。在onDraw方法中完成折線圖的繪制。代碼如下:
折線圖的繪制可以分三部分:1.繪制坐標(biāo)軸 2.繪制View上的文字 3.繪制折線。
1.坐標(biāo)軸繪制的是第一象限,即左下角的點(diǎn)為原點(diǎn)。繪制坐標(biāo)軸代碼如下:
2.繪制文字,代碼如下:
3.繪制折線及漸變填充
六、折線圖添加動(dòng)畫。
1.首先需要計(jì)算動(dòng)畫的進(jìn)度,因此在 LineChartView 中定義成員變量 mProgress,并添加以下方法:
2.接下來設(shè)置動(dòng)畫效果,代碼如下:
3.添加開啟動(dòng)畫的方法:
至此,折線圖的繪制已經(jīng)全部完成。最后還可以添加get() set()方法,暴露出屬性接口,以供外部調(diào)用。代碼就不再貼出來了。
七、使用LineChartView
1.在布局文件中添加 LineChartView,可設(shè)置折線顏色、字體顏色、等屬性,如下:
2.在 Activity 中為 LineChartView 設(shè)置數(shù)據(jù),也可以通過代碼為其設(shè)置屬性。
項(xiàng)目地址:
https://github.com/zhpanvip/LineChartView
文章原創(chuàng)作者GuoLin 書籍推薦
郭林大神原創(chuàng)android 書籍:《第一行代碼 android》
