hellocharts是一个用来生成统计图表的三方库,目前支持折线图、柱状图和饼状图等常见图表。支持缩放、滑动和动画效果。是一个非常实用的Android平台的图标库。在这里我对hellocharts中常见的api进行了整理,以供方便地进行开发。
首先,需要在Android Studio中导包:
compile 'com.github.lecho:hellocharts-library:1.5.8@aar'
<h1>主要的类</h1>
XXXValue:用来对单个的数据进行包装。如PointValue、SubcolumnValue;
XXXChartData:图表的数据模型。如LineChartData、ColumnChartData;
XXXChartView:图表控件对象。如LineChartView、ColumnChartView;
PreviewXXXChartView:图表控件的预览控件。如PreviewLineChartView;
Axis:坐标轴;
Viewport:视图窗口,用来控制图表空间的缩放效果和显示。
<h1>通用API</h1>
<h2>AbstractChartData</h2>
图表的数据模型抽象类。
setValueLabelBackgroundEnabled(boolean isValueLabelBackgroundEnabled):设置是否显示标签的背景
setValueLabelBackgroundColor(int valueLabelBackgroundColor):设置标签背景颜色
setValueLabelsTextColor(int valueLabelTextColor):设置标签文字颜色,默认为白色
setValueLabelTextSize(int valueLabelTextSize):设置标签文字字号,默认为12sp
setValueLabelTypeface(Typeface typeface):设置标签文字字体
setValueLabelBackgroundAuto(boolean isValueLabelBackgrountAuto):设置是否自动绘制标签背景
不使用自动绘制背景,会使用valueLabelBackgroundColor所设置的颜色,默认为灰色。
使用自动绘制背景,会使用Line的颜色作为标签背景色。
setAxisXBottom(Axis axisX):在图表下方设置x轴
setAxisYLeft(Axis axisY):在图表左侧设置y轴
setAxisXTop(Axis axisX):在图表上方设置x轴
setAxisYRight(Axis axisY):在图表右侧设置y轴
<h2>Axis</h2>
static generateAxisFromRange(float start, float stop, float step):生成从值start到stop按照step等差的Axis轴对象。
static generateAxisFromCollection(List<Float> axisValues):根据集合axisValues生成Axis轴对象。
static generateAxisFromCollection(List<Float> axisValues, List<String> axisValuesLabels):根据集合axisValues生成轴对象,axisValuesLabels作为轴坐标对应的标签。
setValues(List<AxisValue> values):设置该轴的坐标信息。
setName(String name):设置轴的名称,默认为空不显示。
setTextSize(int textSize):设置设置轴标签和名称的字号,默认为12sp。
setTypeface(Typeface typeface):设置轴标签和名字的字体。
setTextColor(int color):设置轴标签和名字的颜色。
setAutoGenerated(boolean isAutoGenerated):设置是否自动生成轴对象,自动适应表格的范围。
setHasLines(boolean hasLines):设置是否显示坐标网格。
setLineColor(int lineColor):设置网格线的颜色。
setInside(boolean isInside):设置是否将轴坐标的值显示在图表内侧。
setMaxLabelChars(int maxLabelChars):设置轴标签可显示的最大字符个数,范围在0-32之间。
setFormatter(AxisValueFormatter formatter):设置轴坐标格式化工具
setHasSeparationLine(boolean hasSeparationLine):设置是否显示轴标签与图表之间的分割线
<h2>AxisValue</h2>
Axis轴坐标类。
setValue(float value):设置该轴坐标的值
setLabel(String label):设置该轴坐标的标签
<h2>AbstractChartView</h2>
图表视图抽象类。
setInteractive(boolean isInteractive):设置该图表是否可交互。如不可交互,则图表不会响应缩放、滑动、选择或点击等操作。默认值为true,可交互。
setZoomEnabled(boolean isZoomEnabled):设置是否可缩放。
setScrollEnabled(boolean isScrollEnabled):设置是否可滑动。
moveTo(float x, float y):将视图窗口(viewport)移动至指定位置。如果可以移动,viewport将以该点为视图的中心。
moveToWithAnimation(float x, float y):以动画的形式移动viewport。
setZoomType(ZoomType zoomType):设置缩放类型,可选的类型包括:ZoomType.HORIZONTAL_AND_VERTICAL, ZoomType.HORIZONTAL, ZoomType.VERTICAL,默认值为HORIZONTAL_AND_VERTICAL。
setMaxZoom(float maxZoom):设置最大缩放比例。默认值20。
setZoomLevel(float x, float y, float zoomLevel):以坐标(x,y)为中心,自动缩放表格。注意,该方法应在设置完chartview的数据(chartdata)后再调用。
setZoomLevelWithAnimation(float x, float y, float zoomLevel)
setValueTouchEnabled(boolean isValueTouchEnabled):设置是否允许点击图标上的值,默认为true。
setMaximumViewport(Viewport maxViewport):设置最大化的viewport。注意,该方法应在设置完chartview的数据(chartdata)后再调用。
setCurrentViewport(Viewport targetViewport):设置当前的viewport
setCurrentViewportWithAnimation(Viewport targetViewport)
resetViewports():重新计算最大化和当前viewport
setValueSelectionEnabled(boolean isValueSelectionEnabled):设置是否可以选中图表中的值,即当点击图表中的数据值后,会一直处于选中状态,直到用户点击其他空间。默认为false。
selectValue(SelectedValue selectedValue):选中一个数据值
setContainerScrollEnabled(boolean isContainerScrollEnabled, ContainerScrollType containerScrollType):设置是否允许图表在父容器中滑动。
startDataAnimation():开始以动画的形式更新图表数据。
startDataAnimation(long duration)
cancelDataAnimation()
setDataAnimationListener(ChartAnimationListener animationListener):设置数据动画的监听器
setViewportCalculationEnabled(boolean isEnabled):设置是否允许在动画进行中或设置完表格数据后,自动计算viewport的大小。如果禁止,则需要可以手动设置。
setViewportAnimationListener(ChartAnimationListener animationListener):设置viewport动画的监听器
setViewportChangeListener(ViewportChangeListener viewportChangeListener):设置viewport发生变化的监听器
<h2>Viewport</h2>
通过left, top, right, bottom四边确定的一个矩形区域。用来控制视图窗口的缩放。
set(float left, float top, float right, float bottom):设置大小。 left和right可以控制我们在x轴上想要显示哪部分数据,同理,top和bottom可以控制我们在y轴上要展示的数据。
offset(float dx, float dy):使viewport发生偏移,dx为正数表示向右,dy为正数表示向下
offsetTo(float newLeft, float newTop):使viewport偏移到指定位置,宽高不会改变
inset(float dx, float dy):使viewport缩放,dx为正数会使viewport的宽边窄,dy为正数会使viewport的高度变长。即如果是正数,会放大所要显示的区域。
contains(float x, float y):判断点(x,y)是否在viewport内
contains(float left, float top, float right, float bottom):判断矩形是否在viewport内
contains(Viewport v)
<h2>SelectedValue</h2>
用来保存选中的值的索引的包装类。
setFirstIndex(int firstIndex):设置第一个索引,如LineChart中表示第几条线的值(lineIndex)。
setSecondIndex(int secondIndex):设置第二个索引,如LineChart中表示该条线上的第几个值(valueIndex)。
setType(SelectedValueType type):设置类型。
set(int firstIndex, int secondIndex, SelectedValueType type)
<h1>折线图Line</h1>
<h2>PointValue</h2>
对“点”的封装类。
set(float x, float y):设置点的值
setLabel(String label):点的标签信息
<h2>Line</h2>
对“线”的封装类
setColor(int color):线的颜色
setPointColor(int pointColor):点的颜色
setAreaTransparency(int areaTransparency):透明度?
setStrokeWidth(int strokeWidth):线的粗细
setPointRadius(int pointRadius):点的半径
setHasPoints(boolean hasPoints):是否显示点
setHasLines(boolean hasLines):是否显示线
setHasLabels(boolean hasLabels):是否显示标签
setHasLabelsOnlyForSelected(boolean hasLabelsOnlyForSelected):是否只有在点击“点”时才显示标签
setCubic(boolean isCubic):是否是平滑曲线
setSquare(boolean isSquare):是否以直角的形式显示线
setFilled(boolean isFilled):是否对线的下方填充
setShape(ValueShape shape):“点”的样式,默认提供ValueShape.CIRCLE(圆形)、ValueShape.SQUARE (方形)、ValueShape.DIAMOND(菱形)三种样式。
setPathEffect(PathEffect pathEffect):线的路径效果
setValues(List<PointValue> values):List集合,用来保存线上的每个点的信息。
<h2>LineChartData</h2>
折线图数据模型类。
setLines(List<Line> lines):设置所要展示的“线”
setBaseValue(float baseValue):设置数据的初始值,即所有的数据从baseValue开始计算,默认值为0。
<h2>LineChartView</h2>
setOnValueTouchListener(LineChartOnValueSelectListener touchListener):设置数据值点击监听。LineChartOnValueSelectListener需要实现onValueSelected(int lineIndex, int pointIndex, PointValue value)和onValueDeselected()两个监听回调方法。lineIndex表示点击的“线”的索引,pointIndex表示点击的“点”的索引,value表示该“点”的值。
<h2>PreviewLineChartView</h2>
折线图的预览视图。
setPreviewColor(int color)
<h1>柱状图Column</h1>
<h2>SubcolumnValue</h2>
用来保存子柱状图信息。
setValue(float value)
<h2>Column</h2>
用来表示一组柱状图。一组柱状图可以分成多个子柱状图。
setValues(List<SubcolumnValue> values):设置柱状图的数据内容。
<h2>ColumnChartData</h2>
柱状图数据模型类。
setColumns(List<Column> columns):设置数据
setStacked(boolean isStacked):设置是否将同一组的数据进行堆叠显示
setFillRatio(float fillRatio):设置组与组之间的间隔比率。取值范围从0-1,1表示组与组之间不留任何间隔,0表示组之间会留有2px的间隔。
setBaseValue(float baseValue)
<h2>ColumnChartView</h2>
setColumnChartData(ColumnChartData data):设置柱状图的数据
setOnValueTouchListener(ColumnChartOnValueSelectListener touchListener):设置柱状图点击监听。
<h1>饼状图Pie</h1>
注意,饼状图与其他图表不同的是,饼状图并没有轴,也不支持缩放。为了更好的显示效果,饼状图的布局宽高应相等。
<h2>SliceValue</h2>
饼状图中“扇形”的数据模型。
setValue(float value):设置值
setColor(int color):设置颜色
setSliceSpacing(int sliceSpacing)
setLabel(String label):设置标签
<h2>PieChartData</h2>
饼状图的数据模型
setValues(List<SliceValue> values)
setHasLabelsOutside(boolean hasLabelsOutside):设置是否将标签显示在饼状图外侧。False显示在内测,true显示在外侧。
setHasCenterCircle(boolean hasCenterCircle):设置饼状图中心是否为空心圆
setCenterCircleColor(int centerCircleColor):设置空心圆的颜色
setCenterCircleScale(float centerCircleScale):设置空心圆的大小
setCenterText1(String centerText1):设置饼状图中心的文字1
setCenterText2(String centerText2)
setCenterText1FontSize(int centerText1FontSize):设置饼状图中心文字1的大小
setCenterText1Typeface(Typeface text1Typeface)
setSlicesSpacing(int sliceSpacing):设置扇形之间的间距大小
<h2>PieChartView</h2>
setPieChartData(PieChartData data)
setOnValueTouchListener(PieChartOnValueSelectListener touchListener)
setChartRotation(int rotation, boolean isAnimated):设置饼状图旋转的角度
setChartRotationEnabled(boolean isRotationEnabled):设置饼状图是否可以通过滑动来旋转
setCircleFillRatio(float fillRatio):设置饼状图占用控件的比例,取值范围0-1。默认值为1,表示饼状图尽可能地占满整个控件。
<h1>其他</h1>
其他类型的图表并不常见,但API与上面几种类型图表的API类似,如果需要可以自行查阅,这里不再进一步罗列。
BubbleChartView:气泡图
ComboLineColumnChartView:联合折线和柱状图的图表