hellocharts是一個(gè)用來生成統(tǒng)計(jì)圖表的三方庫埋虹,目前支持折線圖、柱狀圖和餅狀圖等常見圖表。支持縮放帕识、滑動(dòng)和動(dòng)畫效果泛粹。是一個(gè)非常實(shí)用的Android平臺(tái)的圖標(biāo)庫。在這里我對(duì)hellocharts中常見的api進(jìn)行了整理肮疗,以供方便地進(jìn)行開發(fā)晶姊。
首先,需要在Android Studio中導(dǎo)包:
compile 'com.github.lecho:hellocharts-library:1.5.8@aar'
<h1>主要的類</h1>
XXXValue:用來對(duì)單個(gè)的數(shù)據(jù)進(jìn)行包裝伪货。如PointValue们衙、SubcolumnValue;
XXXChartData:圖表的數(shù)據(jù)模型碱呼。如LineChartData蒙挑、ColumnChartData;
XXXChartView:圖表控件對(duì)象愚臀。如LineChartView忆蚀、ColumnChartView;
PreviewXXXChartView:圖表控件的預(yù)覽控件姑裂。如PreviewLineChartView馋袜;
Axis:坐標(biāo)軸;
Viewport:視圖窗口舶斧,用來控制圖表空間的縮放效果和顯示欣鳖。
<h1>通用API</h1>
<h2>AbstractChartData</h2>
圖表的數(shù)據(jù)模型抽象類。
setValueLabelBackgroundEnabled(boolean isValueLabelBackgroundEnabled):設(shè)置是否顯示標(biāo)簽的背景
setValueLabelBackgroundColor(int valueLabelBackgroundColor):設(shè)置標(biāo)簽背景顏色
setValueLabelsTextColor(int valueLabelTextColor):設(shè)置標(biāo)簽文字顏色茴厉,默認(rèn)為白色
setValueLabelTextSize(int valueLabelTextSize):設(shè)置標(biāo)簽文字字號(hào)泽台,默認(rèn)為12sp
setValueLabelTypeface(Typeface typeface):設(shè)置標(biāo)簽文字字體
setValueLabelBackgroundAuto(boolean isValueLabelBackgrountAuto):設(shè)置是否自動(dòng)繪制標(biāo)簽背景
不使用自動(dòng)繪制背景,會(huì)使用valueLabelBackgroundColor所設(shè)置的顏色矾缓,默認(rèn)為灰色师痕。
使用自動(dòng)繪制背景,會(huì)使用Line的顏色作為標(biāo)簽背景色而账。
setAxisXBottom(Axis axisX):在圖表下方設(shè)置x軸
setAxisYLeft(Axis axisY):在圖表左側(cè)設(shè)置y軸
setAxisXTop(Axis axisX):在圖表上方設(shè)置x軸
setAxisYRight(Axis axisY):在圖表右側(cè)設(shè)置y軸
<h2>Axis</h2>
static generateAxisFromRange(float start, float stop, float step):生成從值start到stop按照step等差的Axis軸對(duì)象胰坟。
static generateAxisFromCollection(List<Float> axisValues):根據(jù)集合axisValues生成Axis軸對(duì)象。
static generateAxisFromCollection(List<Float> axisValues, List<String> axisValuesLabels):根據(jù)集合axisValues生成軸對(duì)象泞辐,axisValuesLabels作為軸坐標(biāo)對(duì)應(yīng)的標(biāo)簽笔横。
setValues(List<AxisValue> values):設(shè)置該軸的坐標(biāo)信息。
setName(String name):設(shè)置軸的名稱咐吼,默認(rèn)為空不顯示吹缔。
setTextSize(int textSize):設(shè)置設(shè)置軸標(biāo)簽和名稱的字號(hào),默認(rèn)為12sp锯茄。
setTypeface(Typeface typeface):設(shè)置軸標(biāo)簽和名字的字體厢塘。
setTextColor(int color):設(shè)置軸標(biāo)簽和名字的顏色茶没。
setAutoGenerated(boolean isAutoGenerated):設(shè)置是否自動(dòng)生成軸對(duì)象,自動(dòng)適應(yīng)表格的范圍晚碾。
setHasLines(boolean hasLines):設(shè)置是否顯示坐標(biāo)網(wǎng)格抓半。
setLineColor(int lineColor):設(shè)置網(wǎng)格線的顏色。
setInside(boolean isInside):設(shè)置是否將軸坐標(biāo)的值顯示在圖表內(nèi)側(cè)格嘁。
setMaxLabelChars(int maxLabelChars):設(shè)置軸標(biāo)簽可顯示的最大字符個(gè)數(shù)笛求,范圍在0-32之間。
setFormatter(AxisValueFormatter formatter):設(shè)置軸坐標(biāo)格式化工具
setHasSeparationLine(boolean hasSeparationLine):設(shè)置是否顯示軸標(biāo)簽與圖表之間的分割線
<h2>AxisValue</h2>
Axis軸坐標(biāo)類糕簿。
setValue(float value):設(shè)置該軸坐標(biāo)的值
setLabel(String label):設(shè)置該軸坐標(biāo)的標(biāo)簽
<h2>AbstractChartView</h2>
圖表視圖抽象類探入。
setInteractive(boolean isInteractive):設(shè)置該圖表是否可交互。如不可交互懂诗,則圖表不會(huì)響應(yīng)縮放蜂嗽、滑動(dòng)、選擇或點(diǎn)擊等操作殃恒。默認(rèn)值為true徒爹,可交互。
setZoomEnabled(boolean isZoomEnabled):設(shè)置是否可縮放芋类。
setScrollEnabled(boolean isScrollEnabled):設(shè)置是否可滑動(dòng)。
moveTo(float x, float y):將視圖窗口(viewport)移動(dòng)至指定位置界阁。如果可以移動(dòng)侯繁,viewport將以該點(diǎn)為視圖的中心。
moveToWithAnimation(float x, float y):以動(dòng)畫的形式移動(dòng)viewport泡躯。
setZoomType(ZoomType zoomType):設(shè)置縮放類型贮竟,可選的類型包括:ZoomType.HORIZONTAL_AND_VERTICAL, ZoomType.HORIZONTAL, ZoomType.VERTICAL,默認(rèn)值為HORIZONTAL_AND_VERTICAL较剃。
setMaxZoom(float maxZoom):設(shè)置最大縮放比例咕别。默認(rèn)值20。
setZoomLevel(float x, float y, float zoomLevel):以坐標(biāo)(x,y)為中心写穴,自動(dòng)縮放表格惰拱。注意,該方法應(yīng)在設(shè)置完chartview的數(shù)據(jù)(chartdata)后再調(diào)用啊送。
setZoomLevelWithAnimation(float x, float y, float zoomLevel)
setValueTouchEnabled(boolean isValueTouchEnabled):設(shè)置是否允許點(diǎn)擊圖標(biāo)上的值偿短,默認(rèn)為true。
setMaximumViewport(Viewport maxViewport):設(shè)置最大化的viewport馋没。注意昔逗,該方法應(yīng)在設(shè)置完chartview的數(shù)據(jù)(chartdata)后再調(diào)用。
setCurrentViewport(Viewport targetViewport):設(shè)置當(dāng)前的viewport
setCurrentViewportWithAnimation(Viewport targetViewport)
resetViewports():重新計(jì)算最大化和當(dāng)前viewport
setValueSelectionEnabled(boolean isValueSelectionEnabled):設(shè)置是否可以選中圖表中的值篷朵,即當(dāng)點(diǎn)擊圖表中的數(shù)據(jù)值后勾怒,會(huì)一直處于選中狀態(tài)婆排,直到用戶點(diǎn)擊其他空間。默認(rèn)為false笔链。
selectValue(SelectedValue selectedValue):選中一個(gè)數(shù)據(jù)值
setContainerScrollEnabled(boolean isContainerScrollEnabled, ContainerScrollType containerScrollType):設(shè)置是否允許圖表在父容器中滑動(dòng)段只。
startDataAnimation():開始以動(dòng)畫的形式更新圖表數(shù)據(jù)。
startDataAnimation(long duration)
cancelDataAnimation()
setDataAnimationListener(ChartAnimationListener animationListener):設(shè)置數(shù)據(jù)動(dòng)畫的監(jiān)聽器
setViewportCalculationEnabled(boolean isEnabled):設(shè)置是否允許在動(dòng)畫進(jìn)行中或設(shè)置完表格數(shù)據(jù)后卡乾,自動(dòng)計(jì)算viewport的大小翼悴。如果禁止,則需要可以手動(dòng)設(shè)置幔妨。
setViewportAnimationListener(ChartAnimationListener animationListener):設(shè)置viewport動(dòng)畫的監(jiān)聽器
setViewportChangeListener(ViewportChangeListener viewportChangeListener):設(shè)置viewport發(fā)生變化的監(jiān)聽器
<h2>Viewport</h2>
通過left, top, right, bottom四邊確定的一個(gè)矩形區(qū)域鹦赎。用來控制視圖窗口的縮放。
set(float left, float top, float right, float bottom):設(shè)置大小误堡。 left和right可以控制我們?cè)趚軸上想要顯示哪部分?jǐn)?shù)據(jù)古话,同理,top和bottom可以控制我們?cè)趛軸上要展示的數(shù)據(jù)锁施。
offset(float dx, float dy):使viewport發(fā)生偏移陪踩,dx為正數(shù)表示向右,dy為正數(shù)表示向下
offsetTo(float newLeft, float newTop):使viewport偏移到指定位置悉抵,寬高不會(huì)改變
inset(float dx, float dy):使viewport縮放肩狂,dx為正數(shù)會(huì)使viewport的寬邊窄,dy為正數(shù)會(huì)使viewport的高度變長(zhǎng)姥饰。即如果是正數(shù)傻谁,會(huì)放大所要顯示的區(qū)域。
contains(float x, float y):判斷點(diǎn)(x,y)是否在viewport內(nèi)
contains(float left, float top, float right, float bottom):判斷矩形是否在viewport內(nèi)
contains(Viewport v)
<h2>SelectedValue</h2>
用來保存選中的值的索引的包裝類列粪。
setFirstIndex(int firstIndex):設(shè)置第一個(gè)索引审磁,如LineChart中表示第幾條線的值(lineIndex)。
setSecondIndex(int secondIndex):設(shè)置第二個(gè)索引岂座,如LineChart中表示該條線上的第幾個(gè)值(valueIndex)态蒂。
setType(SelectedValueType type):設(shè)置類型。
set(int firstIndex, int secondIndex, SelectedValueType type)
<h1>折線圖Line</h1>
<h2>PointValue</h2>
對(duì)“點(diǎn)”的封裝類费什。
set(float x, float y):設(shè)置點(diǎn)的值
setLabel(String label):點(diǎn)的標(biāo)簽信息
<h2>Line</h2>
對(duì)“線”的封裝類
setColor(int color):線的顏色
setPointColor(int pointColor):點(diǎn)的顏色
setAreaTransparency(int areaTransparency):透明度钾恢?
setStrokeWidth(int strokeWidth):線的粗細(xì)
setPointRadius(int pointRadius):點(diǎn)的半徑
setHasPoints(boolean hasPoints):是否顯示點(diǎn)
setHasLines(boolean hasLines):是否顯示線
setHasLabels(boolean hasLabels):是否顯示標(biāo)簽
setHasLabelsOnlyForSelected(boolean hasLabelsOnlyForSelected):是否只有在點(diǎn)擊“點(diǎn)”時(shí)才顯示標(biāo)簽
setCubic(boolean isCubic):是否是平滑曲線
setSquare(boolean isSquare):是否以直角的形式顯示線
setFilled(boolean isFilled):是否對(duì)線的下方填充
setShape(ValueShape shape):“點(diǎn)”的樣式,默認(rèn)提供ValueShape.CIRCLE(圓形)鸳址、ValueShape.SQUARE (方形)赘那、ValueShape.DIAMOND(菱形)三種樣式。
setPathEffect(PathEffect pathEffect):線的路徑效果
setValues(List<PointValue> values):List集合氯质,用來保存線上的每個(gè)點(diǎn)的信息募舟。
<h2>LineChartData</h2>
折線圖數(shù)據(jù)模型類。
setLines(List<Line> lines):設(shè)置所要展示的“線”
setBaseValue(float baseValue):設(shè)置數(shù)據(jù)的初始值闻察,即所有的數(shù)據(jù)從baseValue開始計(jì)算拱礁,默認(rèn)值為0琢锋。
<h2>LineChartView</h2>
setOnValueTouchListener(LineChartOnValueSelectListener touchListener):設(shè)置數(shù)據(jù)值點(diǎn)擊監(jiān)聽。LineChartOnValueSelectListener需要實(shí)現(xiàn)onValueSelected(int lineIndex, int pointIndex, PointValue value)和onValueDeselected()兩個(gè)監(jiān)聽回調(diào)方法呢灶。lineIndex表示點(diǎn)擊的“線”的索引吴超,pointIndex表示點(diǎn)擊的“點(diǎn)”的索引,value表示該“點(diǎn)”的值鸯乃。
<h2>PreviewLineChartView</h2>
折線圖的預(yù)覽視圖鲸阻。
setPreviewColor(int color)
<h1>柱狀圖Column</h1>
<h2>SubcolumnValue</h2>
用來保存子柱狀圖信息。
setValue(float value)
<h2>Column</h2>
用來表示一組柱狀圖缨睡。一組柱狀圖可以分成多個(gè)子柱狀圖鸟悴。
setValues(List<SubcolumnValue> values):設(shè)置柱狀圖的數(shù)據(jù)內(nèi)容。
<h2>ColumnChartData</h2>
柱狀圖數(shù)據(jù)模型類奖年。
setColumns(List<Column> columns):設(shè)置數(shù)據(jù)
setStacked(boolean isStacked):設(shè)置是否將同一組的數(shù)據(jù)進(jìn)行堆疊顯示
setFillRatio(float fillRatio):設(shè)置組與組之間的間隔比率细诸。取值范圍從0-1,1表示組與組之間不留任何間隔陋守,0表示組之間會(huì)留有2px的間隔震贵。
setBaseValue(float baseValue)
<h2>ColumnChartView</h2>
setColumnChartData(ColumnChartData data):設(shè)置柱狀圖的數(shù)據(jù)
setOnValueTouchListener(ColumnChartOnValueSelectListener touchListener):設(shè)置柱狀圖點(diǎn)擊監(jiān)聽。
<h1>餅狀圖Pie</h1>
注意水评,餅狀圖與其他圖表不同的是猩系,餅狀圖并沒有軸,也不支持縮放中燥。為了更好的顯示效果寇甸,餅狀圖的布局寬高應(yīng)相等。
<h2>SliceValue</h2>
餅狀圖中“扇形”的數(shù)據(jù)模型褪那。
setValue(float value):設(shè)置值
setColor(int color):設(shè)置顏色
setSliceSpacing(int sliceSpacing)
setLabel(String label):設(shè)置標(biāo)簽
<h2>PieChartData</h2>
餅狀圖的數(shù)據(jù)模型
setValues(List<SliceValue> values)
setHasLabelsOutside(boolean hasLabelsOutside):設(shè)置是否將標(biāo)簽顯示在餅狀圖外側(cè)。False顯示在內(nèi)測(cè)式塌,true顯示在外側(cè)博敬。
setHasCenterCircle(boolean hasCenterCircle):設(shè)置餅狀圖中心是否為空心圓
setCenterCircleColor(int centerCircleColor):設(shè)置空心圓的顏色
setCenterCircleScale(float centerCircleScale):設(shè)置空心圓的大小
setCenterText1(String centerText1):設(shè)置餅狀圖中心的文字1
setCenterText2(String centerText2)
setCenterText1FontSize(int centerText1FontSize):設(shè)置餅狀圖中心文字1的大小
setCenterText1Typeface(Typeface text1Typeface)
setSlicesSpacing(int sliceSpacing):設(shè)置扇形之間的間距大小
<h2>PieChartView</h2>
setPieChartData(PieChartData data)
setOnValueTouchListener(PieChartOnValueSelectListener touchListener)
setChartRotation(int rotation, boolean isAnimated):設(shè)置餅狀圖旋轉(zhuǎn)的角度
setChartRotationEnabled(boolean isRotationEnabled):設(shè)置餅狀圖是否可以通過滑動(dòng)來旋轉(zhuǎn)
setCircleFillRatio(float fillRatio):設(shè)置餅狀圖占用控件的比例,取值范圍0-1峰尝。默認(rèn)值為1偏窝,表示餅狀圖盡可能地占滿整個(gè)控件。
<h1>其他</h1>
其他類型的圖表并不常見武学,但API與上面幾種類型圖表的API類似祭往,如果需要可以自行查閱,這里不再進(jìn)一步羅列火窒。
BubbleChartView:氣泡圖
ComboLineColumnChartView:聯(lián)合折線和柱狀圖的圖表