Guest User

Untitled

a guest
May 26th, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.73 KB | None | 0 0
  1. package com.xxmassdeveloper.mpchartexample;
  2.  
  3. import android.graphics.Color;
  4. import android.graphics.LinearGradient;
  5. import android.graphics.Matrix;
  6. import android.graphics.Paint;
  7. import android.graphics.Shader;
  8. import android.graphics.drawable.Drawable;
  9. import android.graphics.drawable.GradientDrawable;
  10. import android.os.Bundle;
  11. import android.support.v4.content.ContextCompat;
  12. import android.view.WindowManager;
  13.  
  14. import com.github.mikephil.charting.charts.LineChart;
  15. import com.github.mikephil.charting.components.Legend;
  16. import com.github.mikephil.charting.components.LimitLine;
  17. import com.github.mikephil.charting.components.XAxis;
  18. import com.github.mikephil.charting.components.YAxis;
  19. import com.github.mikephil.charting.data.Entry;
  20. import com.github.mikephil.charting.data.LineData;
  21. import com.github.mikephil.charting.data.LineDataSet;
  22. import com.github.mikephil.charting.formatter.IAxisValueFormatter;
  23. import com.github.mikephil.charting.formatter.IFillFormatter;
  24. import com.github.mikephil.charting.interfaces.dataprovider.LineDataProvider;
  25. import com.github.mikephil.charting.interfaces.datasets.ILineDataSet;
  26. import com.xxmassdeveloper.mpchartexample.custom.CustomLineChart;
  27. import com.xxmassdeveloper.mpchartexample.custom.DayAxisValueFormatter;
  28. import com.xxmassdeveloper.mpchartexample.custom.MyMarkerView;
  29. import com.xxmassdeveloper.mpchartexample.custom.MyMarkerViewForFun;
  30. import com.xxmassdeveloper.mpchartexample.notimportant.DemoBase;
  31.  
  32. import java.util.ArrayList;
  33.  
  34. public class FilledLineActivity extends DemoBase {
  35.  
  36. private LineChart mChart;
  37. private int mFillColor = Color.argb(150, 51, 181, 229);
  38.  
  39. @Override
  40. protected void onCreate(Bundle savedInstanceState) {
  41. super.onCreate(savedInstanceState);
  42. getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
  43. WindowManager.LayoutParams.FLAG_FULLSCREEN);
  44. setContentView(R.layout.activity_linechart_noseekbar);
  45.  
  46. mChart = (LineChart) findViewById(R.id.chart1);
  47. mChart.setBackgroundColor(Color.WHITE);
  48. mChart.setGridBackgroundColor(mFillColor);
  49. mChart.setDrawGridBackground(true);
  50.  
  51. mChart.setDrawBorders(true);
  52.  
  53. // no description text
  54. mChart.getDescription().setEnabled(false);
  55.  
  56. // if disabled, scaling can be done on x- and y-axis separately
  57. mChart.setPinchZoom(false);
  58.  
  59. Legend l = mChart.getLegend();
  60. l.setEnabled(false);
  61.  
  62. XAxis xAxis = mChart.getXAxis();
  63. xAxis.setEnabled(true);
  64.  
  65. YAxis leftAxis = mChart.getAxisLeft();
  66. leftAxis.setAxisMaximum(900f);
  67. leftAxis.setAxisMinimum(-250f);
  68. leftAxis.setDrawAxisLine(false);
  69. leftAxis.setDrawZeroLine(false);
  70. leftAxis.setDrawGridLines(false);
  71.  
  72. mChart.getAxisRight().setEnabled(false);
  73.  
  74. // add data
  75. setData(8, 120);
  76.  
  77. mChart.invalidate();
  78. }
  79.  
  80. private void setData(int count, float range) {
  81.  
  82. ArrayList<Entry> yVals1 = new ArrayList<Entry>();
  83.  
  84. for (int i = 0; i < count; i++) {
  85. float val = (float) (Math.random() * range) + 50;// + (float)
  86. // ((mult *
  87. // 0.1) / 10);
  88. yVals1.add(new Entry(i, val));
  89. }
  90.  
  91. ArrayList<Entry> yVals2 = new ArrayList<Entry>();
  92.  
  93. for (int i = 0; i < count; i++) {
  94. float val = (float) (Math.random() * range) + 450;// + (float)
  95. // ((mult *
  96. // 0.1) / 10);
  97. yVals2.add(new Entry(i, val));
  98. }
  99.  
  100. LineDataSet set1, set2;
  101.  
  102. if (mChart.getData() != null &&
  103. mChart.getData().getDataSetCount() > 0) {
  104. set1 = (LineDataSet)mChart.getData().getDataSetByIndex(0);
  105. set2 = (LineDataSet)mChart.getData().getDataSetByIndex(1);
  106. set1.setValues(yVals1);
  107. set2.setValues(yVals2);
  108. mChart.getData().notifyDataChanged();
  109. mChart.notifyDataSetChanged();
  110. } else {
  111. // create a dataset and give it a type
  112. set1 = new LineDataSet(yVals1, "DataSet 1");
  113.  
  114. set1.setAxisDependency(YAxis.AxisDependency.LEFT);
  115. // set1.setColor(Color.rgb(255, 241, 46));
  116. set1.setDrawCircles(false);
  117. set1.setCircleColor(Color.BLACK);
  118. set1.setLineWidth(2f);
  119. set1.setCircleRadius(3f);
  120. set1.setFillAlpha(255);
  121. set1.setDrawFilled(true);
  122. set1.setFillColor(Color.WHITE);
  123.  
  124. // TODO copy this
  125.  
  126.  
  127. set1.setMode(LineDataSet.Mode.CUBIC_BEZIER);
  128.  
  129. int[] colors = { Color.parseColor("#00ffd0"), Color.parseColor("#ff00af")};
  130.  
  131. set1.setCircleColorHole(Color.WHITE);
  132. set1.setCircleHoleRadius(5f);
  133. set1.setCircleColor(Color.WHITE);
  134. set1.setCircleRadius(6f);
  135. set1.setDrawCircles(true);
  136.  
  137. Paint paint = mChart.getRenderer().getPaintRender();
  138. int height = 200;
  139.  
  140. Shader shader = new LinearGradient(0, 0, 0, 200, colors,
  141. null, Shader.TileMode.MIRROR);
  142. Matrix matrix = new Matrix();
  143. matrix.setRotate(90);
  144. shader.setLocalMatrix(matrix);
  145.  
  146. paint.setShader(shader);
  147.  
  148. set1.setColors(colors);
  149. Drawable drawable = ContextCompat.getDrawable(this, R.drawable.background_gradient);
  150. set1.setFillDrawable(drawable);
  151.  
  152. set1.setLineWidth(6f);
  153.  
  154. set1.setHighLightColor(Color.WHITE);
  155. set1.setDrawHorizontalHighlightIndicator(false);
  156.  
  157. MyMarkerViewForFun mv = new MyMarkerViewForFun(this, R.layout.custom_marker_view_for_fun);
  158. mv.setChartView(mChart); // For bounds control
  159. mChart.setMarker(mv); // Set the marker to the chart
  160.  
  161. IAxisValueFormatter xAxisFormatter = new DayAxisValueFormatter(mChart);
  162.  
  163. XAxis xAxis = mChart.getXAxis();
  164. xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
  165. xAxis.setTypeface(mTfLight);
  166. xAxis.setDrawGridLines(false);
  167. xAxis.setGridColor(Color.WHITE);
  168. xAxis.setGranularity(1f); // only intervals of 1 day
  169. xAxis.setLabelCount(7);
  170. xAxis.setValueFormatter(xAxisFormatter);
  171. mChart.setExtraBottomOffset(50);
  172.  
  173.  
  174. // TODO copy this
  175.  
  176. // set1.setDrawCircleHole(false);
  177. set1.setFillFormatter(new IFillFormatter() {
  178. @Override
  179. public float getFillLinePosition(ILineDataSet dataSet, LineDataProvider dataProvider) {
  180. return mChart.getAxisLeft().getAxisMinimum();
  181. }
  182. });
  183.  
  184. // create a dataset and give it a type
  185. set2 = new LineDataSet(yVals2, "DataSet 2");
  186. set2.setAxisDependency(YAxis.AxisDependency.LEFT);
  187. // set2.setColor(Color.rgb(255, 241, 46));
  188. set2.setDrawCircles(false);
  189. set2.setLineWidth(2f);
  190. set2.setCircleRadius(3f);
  191. set2.setFillAlpha(255);
  192. set2.setDrawFilled(true);
  193. set2.setFillColor(Color.WHITE);
  194. set2.setDrawCircleHole(false);
  195. // set2.setHighLightColor(Color.rgb(244, 117, 117));
  196. set2.setFillFormatter(new IFillFormatter() {
  197. @Override
  198. public float getFillLinePosition(ILineDataSet dataSet, LineDataProvider dataProvider) {
  199. return mChart.getAxisLeft().getAxisMaximum();
  200. }
  201. });
  202.  
  203. ArrayList<ILineDataSet> dataSets = new ArrayList<ILineDataSet>();
  204. dataSets.add(set1); // add the datasets
  205. // dataSets.add(set2);
  206.  
  207. // create a data object with the datasets
  208. LineData data = new LineData(dataSets);
  209. data.setDrawValues(false);
  210.  
  211. // set data
  212. mChart.setData(data);
  213. }
  214. }
  215. }
Add Comment
Please, Sign In to add comment