本文要介紹的是一個參照手機支付寶app里面記賬本功能里的“餅狀圖”實現(xiàn)的控件。通常app中可能的數(shù)據(jù)展示控件有柱狀圖,折線圖,餅狀圖等,如果需要一個包含多種View控件的庫,那么 MPAndroidChart 是不錯的選擇,如果只是需要一個簡單的獨立的餅狀圖控件,希望PieGraphView滿足你的要求。
控件介紹
效果圖如下:
目前實現(xiàn)的餅狀圖的效果如下所示,和支付寶app記賬本中的功能基本一樣:
控件功能:
展示的數(shù)據(jù)
可以展示多組數(shù)據(jù)(ItemGroup),每次展示一組數(shù)據(jù),一組數(shù)據(jù)對應形成一個圓環(huán)。一組數(shù)據(jù)由多個Item組成,對應圓環(huán)中的扇形。
public static class ItemGroup { public String id; public Item[] items; } public static class Item { public double value; public int color; public String id; }
圓環(huán)
一個ItemGroup最終顯示為一個圓環(huán)。它的中的items是包含的數(shù)據(jù)項。這些數(shù)據(jù)項根據(jù)其value占總數(shù)據(jù)的比例對應不同的扇形角度。ItemGroup的所有Item依次繪制,形成360°。起始角度和旋轉(zhuǎn)
所有角度值是X正軸開始順時針增加。圓環(huán)有一個開始角度使用字段mStartAngle表示,所有扇形的繪制是從mStartAngle開始的,它是0-360度的數(shù)值,例如可以設置為90讓繪制從正下方開始等。圓環(huán)可以旋轉(zhuǎn),旋轉(zhuǎn)是針對mStartAngle而言的。選中并高亮Item
點擊可以選擇一個扇形,選中的扇形作為“當前項”,使用字段int mCurrentItem
記錄它的索引。選擇一個扇形后,它會旋轉(zhuǎn)其中間角度到mStartAngle的角度,然后對應扇形執(zhí)行“grow”動畫進行高亮突出。