二话不说先贴图

贴代码:

  1. LineColumnDependencyActivity.java
  1. package com.shaoxin.mylinecolumndependencyactivity;
  2.  
  3. import android.os.Bundle;
  4. import android.support.v4.app.Fragment;
  5. import android.support.v7.app.ActionBarActivity;
  6. import android.view.LayoutInflater;
  7. import android.view.View;
  8. import android.view.ViewGroup;
  9.  
  10. import java.util.ArrayList;
  11. import java.util.List;
  12.  
  13. import lecho.lib.hellocharts.gesture.ZoomType;
  14. import lecho.lib.hellocharts.listener.ColumnChartOnValueSelectListener;
  15. import lecho.lib.hellocharts.model.Axis;
  16. import lecho.lib.hellocharts.model.AxisValue;
  17. import lecho.lib.hellocharts.model.Column;
  18. import lecho.lib.hellocharts.model.ColumnChartData;
  19. import lecho.lib.hellocharts.model.Line;
  20. import lecho.lib.hellocharts.model.LineChartData;
  21. import lecho.lib.hellocharts.model.PointValue;
  22. import lecho.lib.hellocharts.model.SubcolumnValue;
  23. import lecho.lib.hellocharts.model.Viewport;
  24. import lecho.lib.hellocharts.util.ChartUtils;
  25. import lecho.lib.hellocharts.view.ColumnChartView;
  26. import lecho.lib.hellocharts.view.LineChartView;
  27.  
  28. public class LineColumnDependencyActivity extends ActionBarActivity {
  29.  
  30. @Override
  31. protected void onCreate(Bundle savedInstanceState) {
  32. super.onCreate(savedInstanceState);
  33. setContentView(R.layout.activity_line_column_dependency);
  34. if (savedInstanceState == null) {
  35. getSupportFragmentManager().beginTransaction().add(R.id.container, new PlaceholderFragment()).commit();
  36. }
  37. }
  38.  
  39. /**
  40. * A placeholder fragment containing a simple view.
  41. */
  42. public static class PlaceholderFragment extends Fragment {
  43. public final static String[] months = new String[]{"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug",
  44. "Sep", "Oct", "Nov", "Dec",};
  45.  
  46. public final static String[] days = new String[]{"Mon", "Tue", "Wen", "Thu", "Fri", "Sat", "Sun",};
  47.  
  48. private LineChartView chartTop;
  49. private ColumnChartView chartBottom;
  50.  
  51. private LineChartData lineData;
  52. private ColumnChartData columnData;
  53.  
  54. public PlaceholderFragment() {
  55. }
  56.  
  57. @Override
  58. public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
  59. View rootView = inflater.inflate(R.layout.fragment_line_column_dependency, container, false);
  60.  
  61. // *** TOP LINE CHART ***
  62. chartTop = (LineChartView) rootView.findViewById(R.id.chart_top);
  63.  
  64. // Generate and set data for line chart
  65. generateInitialLineData();
  66.  
  67. // *** BOTTOM COLUMN CHART ***
  68.  
  69. chartBottom = (ColumnChartView) rootView.findViewById(R.id.chart_bottom);
  70.  
  71. generateColumnData();
  72.  
  73. return rootView;
  74. }
  75.  
  76. private void generateColumnData() {
  77.  
  78. int numSubcolumns = 1;
  79. int numColumns = months.length;
  80.  
  81. List<AxisValue> axisValues = new ArrayList<AxisValue>();
  82. List<Column> columns = new ArrayList<Column>();
  83. List<SubcolumnValue> values;
  84. for (int i = 0; i < numColumns; ++i) {
  85.  
  86. values = new ArrayList<SubcolumnValue>();
  87. for (int j = 0; j < numSubcolumns; ++j) {
  88. values.add(new SubcolumnValue((float) Math.random() * 50f + 5, ChartUtils.pickColor()));
  89. }
  90.  
  91. axisValues.add(new AxisValue(i).setLabel(months[i]));
  92.  
  93. columns.add(new Column(values).setHasLabelsOnlyForSelected(true));
  94. }
  95.  
  96. columnData = new ColumnChartData(columns);
  97.  
  98. columnData.setAxisXBottom(new Axis(axisValues).setHasLines(true));
  99. columnData.setAxisYLeft(new Axis().setHasLines(true).setMaxLabelChars(2));
  100.  
  101. chartBottom.setColumnChartData(columnData);
  102.  
  103. // Set value touch listener that will trigger changes for chartTop.
  104. chartBottom.setOnValueTouchListener(new ValueTouchListener());
  105.  
  106. // Set selection mode to keep selected month column highlighted.
  107. chartBottom.setValueSelectionEnabled(true);
  108.  
  109. chartBottom.setZoomType(ZoomType.HORIZONTAL);
  110.  
  111. // chartBottom.setOnClickListener(new View.OnClickListener() {
  112. //
  113. // @Override
  114. // public void onClick(View v) {
  115. // SelectedValue sv = chartBottom.getSelectedValue();
  116. // if (!sv.isSet()) {
  117. // generateInitialLineData();
  118. // }
  119. //
  120. // }
  121. // });
  122.  
  123. }
  124.  
  125. /**
  126. * Generates initial data for line chart. At the begining all Y values are equals 0. That will change when user
  127. * will select value on column chart.
  128. */
  129. private void generateInitialLineData() {
  130. int numValues = 7;
  131.  
  132. List<AxisValue> axisValues = new ArrayList<AxisValue>();
  133. List<PointValue> values = new ArrayList<PointValue>();
  134. for (int i = 0; i < numValues; ++i) {
  135. values.add(new PointValue(i, 0));
  136. axisValues.add(new AxisValue(i).setLabel(days[i]));
  137. }
  138.  
  139. Line line = new Line(values);
  140. line.setColor(ChartUtils.COLOR_GREEN).setCubic(true);
  141.  
  142. List<Line> lines = new ArrayList<Line>();
  143. lines.add(line);
  144.  
  145. lineData = new LineChartData(lines);
  146. lineData.setAxisXBottom(new Axis(axisValues).setHasLines(true));
  147. lineData.setAxisYLeft(new Axis().setHasLines(true).setMaxLabelChars(3));
  148.  
  149. chartTop.setLineChartData(lineData);
  150.  
  151. // For build-up animation you have to disable viewport recalculation.
  152. chartTop.setViewportCalculationEnabled(false);
  153.  
  154. // And set initial max viewport and current viewport- remember to set viewports after data.
  155. Viewport v = new Viewport(0, 110, 6, 0);
  156. chartTop.setMaximumViewport(v);
  157. chartTop.setCurrentViewport(v);
  158.  
  159. chartTop.setZoomType(ZoomType.HORIZONTAL);
  160. }
  161.  
  162. private void generateLineData(int color, float range) {
  163. // Cancel last animation if not finished.
  164. chartTop.cancelDataAnimation();
  165.  
  166. // Modify data targets
  167. Line line = lineData.getLines().get(0);// For this example there is always only one line.
  168. line.setColor(color);
  169. for (PointValue value : line.getValues()) {
  170. // Change target only for Y value.
  171. value.setTarget(value.getX(), (float) Math.random() * range);
  172. }
  173.  
  174. // Start new data animation with 300ms duration;
  175. chartTop.startDataAnimation(300);
  176. }
  177.  
  178. private class ValueTouchListener implements ColumnChartOnValueSelectListener {
  179.  
  180. @Override
  181. public void onValueSelected(int columnIndex, int subcolumnIndex, SubcolumnValue value) {
  182. generateLineData(value.getColor(), 100);
  183. }
  184.  
  185. @Override
  186. public void onValueDeselected() {
  187.  
  188. generateLineData(ChartUtils.COLOR_GREEN, 0);
  189.  
  190. }
  191. }
  192. }
  193. }

activity_line_column_dependency.xml

  1. <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. xmlns:tools="http://schemas.android.com/tools"
  3. android:id="@+id/container"
  4. android:layout_width="match_parent"
  5. android:layout_height="match_parent"
  6. tools:ignore="MergeRootFrame" />

fragment_line_column_dependency.xml

  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. xmlns:tools="http://schemas.android.com/tools"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. android:orientation="vertical"
  6. android:paddingBottom="@dimen/activity_vertical_margin"
  7. android:paddingLeft="@dimen/activity_horizontal_margin"
  8. android:paddingRight="@dimen/activity_horizontal_margin"
  9. android:paddingTop="@dimen/activity_vertical_margin"
  10. >
  11.  
  12. <lecho.lib.hellocharts.view.LineChartView
  13. android:id="@+id/chart_top"
  14. android:layout_width="match_parent"
  15. android:layout_height="0dp"
  16. android:layout_weight="1" >
  17. </lecho.lib.hellocharts.view.LineChartView>
  18.  
  19. <View
  20. android:layout_width="match_parent"
  21. android:layout_height="2dp"
  22. android:layout_marginBottom="8dp"
  23. android:layout_marginTop="8dp"
  24. android:background="@android:color/darker_gray" />
  25.  
  26. <lecho.lib.hellocharts.view.ColumnChartView
  27. android:id="@+id/chart_bottom"
  28. android:layout_width="match_parent"
  29. android:layout_height="0dp"
  30. android:layout_weight="1" >
  31. </lecho.lib.hellocharts.view.ColumnChartView>
  32.  
  33. </LinearLayout>

觉得好的别忘了评论点赞

hellocharts折线图与柱状图的上下结合酷炫效果(学习笔记)的更多相关文章

  1. excel在一个图表内,显示折线图和柱状图

      折线图和柱状图,在同一个图表中拆分显示   一个图,设置主坐标轴 另外一个图,设置次坐标轴     拆分,通过调整纵坐标的最小值和最大值来实现     关于图表的标题,选中图表,选择布局,然后图表 ...

  2. echarts、higncharts折线图或柱状图显示数据为0的点

    echarts.higncharts折线图或柱状图只需要后端传到前端一段json数据,接送数据的x轴与y周有对应数据,折线图或柱状图就会渲染出这数据. 比如,x轴表示美每天日期,y轴表示数量.他们的数 ...

  3. DevExpress 折线图和柱状图的绘制与数据绑定

    DevExpress 组件是一个非常丰富和强大的组件,适合各种可视化图形的绘制与展示,在数据分析展示中是个很有帮助的,网上也有很多关于这方面的文章,关于折线图或柱状图的画法,以下是自己在工作中接触到的 ...

  4. MATLAB之折线图、柱状图、饼图以及常用绘图技巧

    MATLAB之折线图.柱状图.饼图以及常用绘图技巧 一.折线图 参考代码: %图1:各模式直接成本预测 %table0-table1为1*9的数组,记录关键数据 table0 = data_modol ...

  5. Qt数据可视化(散点图、折线图、柱状图、盒须图、饼状图、雷达图)开发实例

    ​  目录 散点图 折线图 柱状图 水平柱状图 水平堆叠图 水平百分比柱状图 盒须图 饼状图 雷达图 Qt散点图.折线图.柱状图.盒须图.饼状图.雷达图开发实例. 在开发过程中我们会使用多各种各样的图 ...

  6. 纯CSS3实现的一些酷炫效果

    之前在网上看到一些用纯CSS3实现的酷炫效果,以为实现起来比较困难,于是想看看具体是怎么实现的. 一.笑脸猫动画 实现效果如下: 这个实现起来确实比较麻烦,很多地方需要花时间,有耐心地调整. 1.先看 ...

  7. hellocharts的折线图与柱状图的结合之ComboLineColumnChartView

    哼哼,网上找了半天都不全,所以决定自己写一个完整的可以直接贴代码的 test.xml <?xml version="1.0" encoding="utf-8&quo ...

  8. DevExpress使用之ChartControl控件绘制图表(多坐标折线图、柱状图、饼状图)

    最近因为公司项目需要用到WinForm的DecExpress控件,在这里把一些使用方法总结一下. DevExpress中有一个专门用来绘制图表的插件ChartControl,可以绘制折线图.饼状图.柱 ...

  9. VS2010 使用TeeChart画图控件 - 之二 - 绘制图形(折线图,柱状图)

    1.前期准备 详细可见VS2010 使用TeeChart画图控件 - 之中的一个 控件和类的导入 1. 1 加入TeeChart控件,给控件加入变量m_TeeChart 加入TeeChart控件,右击 ...

随机推荐

  1. 基础知识(05) -- Java中的类

    Java中的类 1.类的概念 2.类中的封装 3.对象的三大特征 4.对象状态 5.类与类之间的关系 ------------------------------------------------- ...

  2. 【IOS】模仿"抽屉新热榜"动态启动页YFSplashScreen

    IOS最好要设置系统默认启动页面,不然进入应用就会突然闪现黑色画面 下图是我们要实现的效果: 总体思路:设置一个系统默认启动页面,在进入didFinishLaunchingWithOptions时, ...

  3. Go收藏

    Go项目收藏 电子书 1.Go Web 编程 2.Go入门指南(the-way-to-go_ZH_CN) 3.Go语言圣经(中文版) Go by Example 中文 一些Go英文电子书 High P ...

  4. V4L2框架分析学习二

    转载于:http://www.techbulo.com/1198.html v4l2_device v4l2_device在v4l2框架中充当所有v4l2_subdev的父设备,管理着注册在其下的子设 ...

  5. mfc对话询问窗体

    // 显示消息对话框       nRes = MessageBox(_T("您确定要跳转网站?"), _T("提示"), MB_OKCANCEL | MB_I ...

  6. JavaScript倒计时

    倒计时: 1.设置一个有效的结束日期 2.计算剩余时间 3.将时间转换成可用的格式 4.输出时钟数据作为一个可重用的对象 5.在页面上显示时钟,并在它到达0时停止 <div id="c ...

  7. http://www.sqlservercentral.com/articles/Failover+Clustered+Instance+(FCI)/92196/

    http://www.sqlservercentral.com/articles/Failover+Clustered+Instance+(FCI)/92196/ http://blogs.msdn. ...

  8. UML入门

    本文主要讲解uml的一些入门知识. uml:统一建模语言,uml通过图形化的表达对系统进行细致的划分,在开发前期有助于开发人员与开发人员之间交流,同时也能方便用户与开发者之间进行良好的反馈.利用uml ...

  9. 微信小程序开发工具的数据,配置,日志等目录在哪儿? 怎么找?

    原文地址:http://www.wxapp-union.com/portal.php?mod=view&aid=359 本文由本站halfyawn原创:感谢原创者:如有疑问,请在评论内回复   ...

  10. CloudSim4.0报错NoClassDefFoundError,Caused by: java.lang.ClassNotFoundException: org.apache.commons.math3.distribution.UniformRealDistribution

    今天下载了CloudSim 4.0的代码,运行其中自带的示例程序,结果有一部分运行错误: 原因是找不到org.apache.commons.math3.distribution.UniformReal ...