在Android中如何繪製光滑曲線(二)

上一篇主要介紹了繪製經過每個點的光滑曲線的原理,本文會重點介紹一下在Android中如何從零開始使用貝塞爾方法編寫一個光滑曲線圖控件。程序的設計圖如下:

bessel_chart

一、樣式控制類ChartStyle

二、基礎數據集合ChartData

2.1、座標軸標籤Label

2.2、時間序列Series

2.3、橫向標題Title

2.4、數據結點Point

三、光滑曲線圖BesselChartView

四、核心類BesselCalculator

五、核心代碼:

5.1 計算光滑曲線的貝塞爾控制點

5.2、座標變換。由於手機屏幕的座標是朝右下方的,而我們實際顯示的時候是朝左上方的,所以需要進行座標變換,代碼:

5.3、實現拖動

實現OnGestureListener的OnScroll方法

在BesselChartView的onDraw方法中調用如下代碼來平移畫布實現拖動

 

5.4、實現滑動

只實現拖動會讓人有一種不流暢的感覺,所以還需要實現滑動,考慮到應用要支持api level 8,可以使用Scroller來實現(api level 9以後google推薦使用OverScroller來實現,OverScroller允許滾動超出邊界,可以實現回彈效果), OnGestureListener的onFling和onDown方法:

獲取scroller計算的偏移,同時刷新UI,computeScroll()會在View的onDraw方法之前執行

5.5、實現滾動動畫

六、使用到的繪圖相關的api

6.1 Canvas 畫布

6.2 Paint 畫筆

6.3 Path 路徑

七、源代碼地址:https://github.com/TomkeyZhang/BesselChart

八、在安居客android app中的效果圖

graph

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章