hellocharts折线图与柱状图的上下结合酷炫效果(学习笔记)
二话不说先贴图
贴代码:
- LineColumnDependencyActivity.java
- package com.shaoxin.mylinecolumndependencyactivity;
- import android.os.Bundle;
- import android.support.v4.app.Fragment;
- import android.support.v7.app.ActionBarActivity;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.ViewGroup;
- import java.util.ArrayList;
- import java.util.List;
- import lecho.lib.hellocharts.gesture.ZoomType;
- import lecho.lib.hellocharts.listener.ColumnChartOnValueSelectListener;
- import lecho.lib.hellocharts.model.Axis;
- import lecho.lib.hellocharts.model.AxisValue;
- import lecho.lib.hellocharts.model.Column;
- import lecho.lib.hellocharts.model.ColumnChartData;
- import lecho.lib.hellocharts.model.Line;
- import lecho.lib.hellocharts.model.LineChartData;
- import lecho.lib.hellocharts.model.PointValue;
- import lecho.lib.hellocharts.model.SubcolumnValue;
- import lecho.lib.hellocharts.model.Viewport;
- import lecho.lib.hellocharts.util.ChartUtils;
- import lecho.lib.hellocharts.view.ColumnChartView;
- import lecho.lib.hellocharts.view.LineChartView;
- public class LineColumnDependencyActivity extends ActionBarActivity {
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_line_column_dependency);
- if (savedInstanceState == null) {
- getSupportFragmentManager().beginTransaction().add(R.id.container, new PlaceholderFragment()).commit();
- }
- }
- /**
- * A placeholder fragment containing a simple view.
- */
- public static class PlaceholderFragment extends Fragment {
- public final static String[] months = new String[]{"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug",
- "Sep", "Oct", "Nov", "Dec",};
- public final static String[] days = new String[]{"Mon", "Tue", "Wen", "Thu", "Fri", "Sat", "Sun",};
- private LineChartView chartTop;
- private ColumnChartView chartBottom;
- private LineChartData lineData;
- private ColumnChartData columnData;
- public PlaceholderFragment() {
- }
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
- View rootView = inflater.inflate(R.layout.fragment_line_column_dependency, container, false);
- // *** TOP LINE CHART ***
- chartTop = (LineChartView) rootView.findViewById(R.id.chart_top);
- // Generate and set data for line chart
- generateInitialLineData();
- // *** BOTTOM COLUMN CHART ***
- chartBottom = (ColumnChartView) rootView.findViewById(R.id.chart_bottom);
- generateColumnData();
- return rootView;
- }
- private void generateColumnData() {
- int numSubcolumns = 1;
- int numColumns = months.length;
- List<AxisValue> axisValues = new ArrayList<AxisValue>();
- List<Column> columns = new ArrayList<Column>();
- List<SubcolumnValue> values;
- for (int i = 0; i < numColumns; ++i) {
- values = new ArrayList<SubcolumnValue>();
- for (int j = 0; j < numSubcolumns; ++j) {
- values.add(new SubcolumnValue((float) Math.random() * 50f + 5, ChartUtils.pickColor()));
- }
- axisValues.add(new AxisValue(i).setLabel(months[i]));
- columns.add(new Column(values).setHasLabelsOnlyForSelected(true));
- }
- columnData = new ColumnChartData(columns);
- columnData.setAxisXBottom(new Axis(axisValues).setHasLines(true));
- columnData.setAxisYLeft(new Axis().setHasLines(true).setMaxLabelChars(2));
- chartBottom.setColumnChartData(columnData);
- // Set value touch listener that will trigger changes for chartTop.
- chartBottom.setOnValueTouchListener(new ValueTouchListener());
- // Set selection mode to keep selected month column highlighted.
- chartBottom.setValueSelectionEnabled(true);
- chartBottom.setZoomType(ZoomType.HORIZONTAL);
- // chartBottom.setOnClickListener(new View.OnClickListener() {
- //
- // @Override
- // public void onClick(View v) {
- // SelectedValue sv = chartBottom.getSelectedValue();
- // if (!sv.isSet()) {
- // generateInitialLineData();
- // }
- //
- // }
- // });
- }
- /**
- * Generates initial data for line chart. At the begining all Y values are equals 0. That will change when user
- * will select value on column chart.
- */
- private void generateInitialLineData() {
- int numValues = 7;
- List<AxisValue> axisValues = new ArrayList<AxisValue>();
- List<PointValue> values = new ArrayList<PointValue>();
- for (int i = 0; i < numValues; ++i) {
- values.add(new PointValue(i, 0));
- axisValues.add(new AxisValue(i).setLabel(days[i]));
- }
- Line line = new Line(values);
- line.setColor(ChartUtils.COLOR_GREEN).setCubic(true);
- List<Line> lines = new ArrayList<Line>();
- lines.add(line);
- lineData = new LineChartData(lines);
- lineData.setAxisXBottom(new Axis(axisValues).setHasLines(true));
- lineData.setAxisYLeft(new Axis().setHasLines(true).setMaxLabelChars(3));
- chartTop.setLineChartData(lineData);
- // For build-up animation you have to disable viewport recalculation.
- chartTop.setViewportCalculationEnabled(false);
- // And set initial max viewport and current viewport- remember to set viewports after data.
- Viewport v = new Viewport(0, 110, 6, 0);
- chartTop.setMaximumViewport(v);
- chartTop.setCurrentViewport(v);
- chartTop.setZoomType(ZoomType.HORIZONTAL);
- }
- private void generateLineData(int color, float range) {
- // Cancel last animation if not finished.
- chartTop.cancelDataAnimation();
- // Modify data targets
- Line line = lineData.getLines().get(0);// For this example there is always only one line.
- line.setColor(color);
- for (PointValue value : line.getValues()) {
- // Change target only for Y value.
- value.setTarget(value.getX(), (float) Math.random() * range);
- }
- // Start new data animation with 300ms duration;
- chartTop.startDataAnimation(300);
- }
- private class ValueTouchListener implements ColumnChartOnValueSelectListener {
- @Override
- public void onValueSelected(int columnIndex, int subcolumnIndex, SubcolumnValue value) {
- generateLineData(value.getColor(), 100);
- }
- @Override
- public void onValueDeselected() {
- generateLineData(ChartUtils.COLOR_GREEN, 0);
- }
- }
- }
- }
activity_line_column_dependency.xml
- <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:id="@+id/container"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- tools:ignore="MergeRootFrame" />
fragment_line_column_dependency.xml
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical"
- android:paddingBottom="@dimen/activity_vertical_margin"
- android:paddingLeft="@dimen/activity_horizontal_margin"
- android:paddingRight="@dimen/activity_horizontal_margin"
- android:paddingTop="@dimen/activity_vertical_margin"
- >
- <lecho.lib.hellocharts.view.LineChartView
- android:id="@+id/chart_top"
- android:layout_width="match_parent"
- android:layout_height="0dp"
- android:layout_weight="1" >
- </lecho.lib.hellocharts.view.LineChartView>
- <View
- android:layout_width="match_parent"
- android:layout_height="2dp"
- android:layout_marginBottom="8dp"
- android:layout_marginTop="8dp"
- android:background="@android:color/darker_gray" />
- <lecho.lib.hellocharts.view.ColumnChartView
- android:id="@+id/chart_bottom"
- android:layout_width="match_parent"
- android:layout_height="0dp"
- android:layout_weight="1" >
- </lecho.lib.hellocharts.view.ColumnChartView>
- </LinearLayout>
觉得好的别忘了评论点赞
hellocharts折线图与柱状图的上下结合酷炫效果(学习笔记)的更多相关文章
- excel在一个图表内,显示折线图和柱状图
折线图和柱状图,在同一个图表中拆分显示 一个图,设置主坐标轴 另外一个图,设置次坐标轴 拆分,通过调整纵坐标的最小值和最大值来实现 关于图表的标题,选中图表,选择布局,然后图表 ...
- echarts、higncharts折线图或柱状图显示数据为0的点
echarts.higncharts折线图或柱状图只需要后端传到前端一段json数据,接送数据的x轴与y周有对应数据,折线图或柱状图就会渲染出这数据. 比如,x轴表示美每天日期,y轴表示数量.他们的数 ...
- DevExpress 折线图和柱状图的绘制与数据绑定
DevExpress 组件是一个非常丰富和强大的组件,适合各种可视化图形的绘制与展示,在数据分析展示中是个很有帮助的,网上也有很多关于这方面的文章,关于折线图或柱状图的画法,以下是自己在工作中接触到的 ...
- MATLAB之折线图、柱状图、饼图以及常用绘图技巧
MATLAB之折线图.柱状图.饼图以及常用绘图技巧 一.折线图 参考代码: %图1:各模式直接成本预测 %table0-table1为1*9的数组,记录关键数据 table0 = data_modol ...
- Qt数据可视化(散点图、折线图、柱状图、盒须图、饼状图、雷达图)开发实例
目录 散点图 折线图 柱状图 水平柱状图 水平堆叠图 水平百分比柱状图 盒须图 饼状图 雷达图 Qt散点图.折线图.柱状图.盒须图.饼状图.雷达图开发实例. 在开发过程中我们会使用多各种各样的图 ...
- 纯CSS3实现的一些酷炫效果
之前在网上看到一些用纯CSS3实现的酷炫效果,以为实现起来比较困难,于是想看看具体是怎么实现的. 一.笑脸猫动画 实现效果如下: 这个实现起来确实比较麻烦,很多地方需要花时间,有耐心地调整. 1.先看 ...
- hellocharts的折线图与柱状图的结合之ComboLineColumnChartView
哼哼,网上找了半天都不全,所以决定自己写一个完整的可以直接贴代码的 test.xml <?xml version="1.0" encoding="utf-8&quo ...
- DevExpress使用之ChartControl控件绘制图表(多坐标折线图、柱状图、饼状图)
最近因为公司项目需要用到WinForm的DecExpress控件,在这里把一些使用方法总结一下. DevExpress中有一个专门用来绘制图表的插件ChartControl,可以绘制折线图.饼状图.柱 ...
- VS2010 使用TeeChart画图控件 - 之二 - 绘制图形(折线图,柱状图)
1.前期准备 详细可见VS2010 使用TeeChart画图控件 - 之中的一个 控件和类的导入 1. 1 加入TeeChart控件,给控件加入变量m_TeeChart 加入TeeChart控件,右击 ...
随机推荐
- 基础知识(05) -- Java中的类
Java中的类 1.类的概念 2.类中的封装 3.对象的三大特征 4.对象状态 5.类与类之间的关系 ------------------------------------------------- ...
- 【IOS】模仿"抽屉新热榜"动态启动页YFSplashScreen
IOS最好要设置系统默认启动页面,不然进入应用就会突然闪现黑色画面 下图是我们要实现的效果: 总体思路:设置一个系统默认启动页面,在进入didFinishLaunchingWithOptions时, ...
- Go收藏
Go项目收藏 电子书 1.Go Web 编程 2.Go入门指南(the-way-to-go_ZH_CN) 3.Go语言圣经(中文版) Go by Example 中文 一些Go英文电子书 High P ...
- V4L2框架分析学习二
转载于:http://www.techbulo.com/1198.html v4l2_device v4l2_device在v4l2框架中充当所有v4l2_subdev的父设备,管理着注册在其下的子设 ...
- mfc对话询问窗体
// 显示消息对话框 nRes = MessageBox(_T("您确定要跳转网站?"), _T("提示"), MB_OKCANCEL | MB_I ...
- JavaScript倒计时
倒计时: 1.设置一个有效的结束日期 2.计算剩余时间 3.将时间转换成可用的格式 4.输出时钟数据作为一个可重用的对象 5.在页面上显示时钟,并在它到达0时停止 <div id="c ...
- http://www.sqlservercentral.com/articles/Failover+Clustered+Instance+(FCI)/92196/
http://www.sqlservercentral.com/articles/Failover+Clustered+Instance+(FCI)/92196/ http://blogs.msdn. ...
- UML入门
本文主要讲解uml的一些入门知识. uml:统一建模语言,uml通过图形化的表达对系统进行细致的划分,在开发前期有助于开发人员与开发人员之间交流,同时也能方便用户与开发者之间进行良好的反馈.利用uml ...
- 微信小程序开发工具的数据,配置,日志等目录在哪儿? 怎么找?
原文地址:http://www.wxapp-union.com/portal.php?mod=view&aid=359 本文由本站halfyawn原创:感谢原创者:如有疑问,请在评论内回复 ...
- CloudSim4.0报错NoClassDefFoundError,Caused by: java.lang.ClassNotFoundException: org.apache.commons.math3.distribution.UniformRealDistribution
今天下载了CloudSim 4.0的代码,运行其中自带的示例程序,结果有一部分运行错误: 原因是找不到org.apache.commons.math3.distribution.UniformReal ...