Android图表Hellocharts开源框架介绍

  • Hellocharts

  • 图表组件父类 AbstractChartView

AbstractChartView属性

  • 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发生变化的监听器

  • Viewport 属性

  • 通过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)

  • 图表数据父类AbstractChartData

  • AbstractChartData通用属性

  • 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轴

  • Axis

  • 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):设置是否将轴坐标的值显示在图表内侧。

  • setInside的效果

  • setMaxLabelChars(int maxLabelChars):设置轴标签可显示的最大字符个数,范围在0-32之间。

  • setFormatter(AxisValueFormatter formatter):设置轴坐标格式化工具

  • setHasSeparationLine(boolean hasSeparationLine):设置是否显示轴标签与图表之间的分割线

  • AxisValue属性 Axis轴坐标类

  • setValue(float value):设置该轴坐标的值

  • setLabel(String label):设置该轴坐标的标签

  • SelectedValue属性 用来保存选中的值的索引的包装类。

  • setFirstIndex(int firstIndex):设置第一个索引,如LineChart中表示第几条线的值(lineIndex)。

  • setSecondIndex(int secondIndex):设置第二个索引,如LineChart中表示该条线上的第几个值(valueIndex)。

  • setType(SelectedValueType type):设置类型。

  • set(int firstIndex, int secondIndex, SelectedValueType type)

饼状

注意,饼状图与其他图表不同的是,饼状图并没有轴,也不支持缩放。为了更好的显示效果,饼状图的布局宽高应相等。

PieChartView

饼状组件,用于界面显示图表,使用如下

    <lecho.lib.hellocharts.view.PieChartView
          android:id="@+id/chart_view"
          android:layout_width="match_parent"
          android:layout_height="wrap_content" />

PieChartView属性介绍

  • setPieChartData 设置数据

  • setOnValueTouchListener 设置图表触摸事件

  • setChartRotation 设置旋转角度

  • setChartRotationEnabled 设置是否支持旋转

  • setCircleFillRatio 设置饼状图占用控件的比例

PieChartData

饼状数据 SliceValue数据模型

  • setValue(float value):设置值

  • setColor(int color):设置颜色

  • setSliceSpacing(int sliceSpacing)

  • setLabel(String label):设置标签

使用例子

 List<SliceValue> values = new ArrayList<SliceValue>();
 values.add(new SliceValue(1f, Color.RED));
 values.add(new SliceValue(10f, 0xFFEC7BA8));
 values.add(new SliceValue(20f, 0xFFE84486));
 PieChartData data = new PieChartData(values);

PieChartData属性介绍

  • PieChartData(List<SliceValue> values) 有参构造,设置占比与对应占比颜色

  • setValues(List<SliceValue> values) 设置数据模型

  • setHasLabels 设置是否有标签,默认内部标签

  • setHasLabelsOutside 设置是否启用外部标签

  • setHasLabelsOnlyForSelected 设置是否为选中时有标签

  • setHasCenterCircle 设置是否有中心圆

  • setCenterCircleScale 设置中心圆占比,最大设置1

  • setSlicesSpacing 设置分割间距

  • setCenterText1 设置中心文本1

  • setCenterText2 设置中心文本2

  • setCenterText1FontSize 设置中心文本字体1

  • setCenterText2Typeface 设置中心文本字体2

柱状

ColumnChartView

柱状组件,用于界面显示图表,使用如下

    <lecho.lib.hellocharts.view.ColumnChartView
          android:id="@+id/chart_view"
          android:layout_width="match_parent"
          android:layout_height="wrap_content" />

ColumnChartView属性

  • setColumnChartData 设置图表数据

  • setOnValueTouchListener 设置图表触摸事件

SubcolumnValue 数据模型

  • setValue 设置数据

  • setColor 设置颜色

  • setTarget 设置目标

  • setLabel 设置标签

new SubcolumnValue((i + j + 2) * 5, 0xFFEC7BA8)

Column的属性

用来表示一组柱状图。一组柱状图可以分成多个子柱状图。

  • setValues 设置柱状图数据内容

  • setFormatter 设置柱状图数据标注小数位

  • setHasLabels 设置是否有数据标注

  • setHasLabelsOnlyForSelected 设置是否点击显示标注

        //X轴数据集合
        List<String> week = new ArrayList<>();
        String[] stringArray = getResources().getStringArray(R.array.week);
        for (String weekName : stringArray) {
            week.add(weekName);
        }
        X轴与柱状数据即可关联集合
        ArrayList<AxisValue> axisValues = new ArrayList<>();
        //柱状数据组集合
        List<Column> columns = new ArrayList<>();
        //柱状数据组
        List<SubcolumnValue> values;
        for (int i = 0; i < 5; i++) {
            values = new ArrayList<>();
            for (int j = 0; j < 2; j++) {
                if (j == 0) {
                    values.add(new SubcolumnValue((i + j + 2) * 5, 0xFFEC7BA8));
                } else {
                    values.add(new SubcolumnValue((i + j + 2) * 5, Color.RED));
                }
            }
            Column column = new Column(values);
            ColumnChartValueFormatter chartValueFormatter = new SimpleColumnChartValueFormatter(2);
            column.setFormatter(chartValueFormatter);
            column.setHasLabels(true);
            column.setHasLabelsOnlyForSelected(false);
            columns.add(column);
            //给x轴坐标设置描述
            axisValues.add(new AxisValue(i).setLabel(week.get(i)));
        }

ColumnChartData属性

  • setColumns 设置数据

  • setStacked 设置同一组数据是否叠堆

  • setFillRatio 设置组与组之间的间距比

  • setBaseValue 设置基准值

折线

LineChartView

LineChartView 属性

  • setOnValueTouchListener 设置数据值点击监听 实现onValueSelected(int lineIndex, int pointIndex, PointValue value)和onValueDeselected()两个监听回调方法。 lineIndex表示点击的“线”的索引,pointIndex表示点击的“点”的索引,value表示该“点”的值。

  • setLineChartData 设置图表数据

例子

    <lecho.lib.hellocharts.view.LineChartView
          android:id="@+id/chart_view"
          android:layout_width="match_parent"
          android:layout_height="wrap_content" />

PreviewLineChartView 折线图的预览视图。

  • setPreviewColor 设置颜色

PointValue 属性 对“点”的封装类。

  • set 设置点的值

  • setLabel 设置点的标签信息

  • Line 属性 对“线”的封装类

  • setColor 设置线颜色

  • setCubic 设置平滑曲线

  • setSquare 设置是否为直角的形式显示线

  • setFilled 设置是否填充线下颜色

  • setShape 设置点样式 默认提供ValueShape.CIRCLE(圆形)、ValueShape.SQUARE (方形)、ValueShape.DIAMOND(菱形

  • setPathEffect 设置线的路径效果

  • setValues 保存线上的每个点信息

  • setHasLabelsOnlyForSelected 设置点击显示标签

  • setHasLabels 设置是否显示标签

  • setHasLines 设置是否显示线

  • setHasPoints 设置是否显示点

  • setPointRadius 设置点的半径

  • setStrokeWidth 设置线的粗细

  • setAreaTransparency 设置透明度

  • setPointColor 设置点颜色

LineChartData 折线图数据模型类

  • setLines 设置展示数据

  • setBaseValue 设置初始值

  • setAxisXBottom 设置X轴

  • setAxisYLeft 设置Y轴

[Demo下载地址]("https://blog.csdn.net/duanchuanzhi/article/details/129592066 ")

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
HelloCharts 是一款基于 Android图表库,可以方便地创建各种类型的图表,如折线图、柱状图、饼图等。以下是在 Android Studio 中使用 HelloCharts 的步骤: 1. 在 app 模块的 build.gradle 中添加以下依赖: ``` implementation 'com.github.lecho:hellocharts-library:1.5.8@aar' ``` 2. 在布局文件中添加一个 HelloCharts 的视图控件,例如: ```xml <lecho.lib.hellocharts.view.LineChartView android:id="@+id/chart" android:layout_width="match_parent" android:layout_height="match_parent" /> ``` 3. 在 Java 代码中获取该视图控件,并使用 ChartData 和 ChartConfiguration 对象来设置图表的数据和样式,例如: ```java LineChartView chart = (LineChartView) findViewById(R.id.chart); List<PointValue> values = new ArrayList<PointValue>(); values.add(new PointValue(0, 2)); values.add(new PointValue(1, 4)); values.add(new PointValue(2, 3)); values.add(new PointValue(3, 5)); Line line = new Line(values).setColor(Color.BLUE); List<Line> lines = new ArrayList<Line>(); lines.add(line); LineChartData data = new LineChartData(); data.setLines(lines); chart.setLineChartData(data); ``` 其中,通过创建 PointValue 对象来设置每个数据点的横纵坐标值,然后使用 Line 对象将这些点连接起来,最后将所有 Line 对象添加到 ChartData 中,并通过 setLineChartData() 方法将其设置到图表控件中。 以上是使用 HelloCharts 创建折线图的简单示例,你可以参考 HelloCharts 的官方文档来学习更多关于该库的用法和应用场景。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

丿末兮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值