You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

BarChart.java 1.6KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. package com.feemers.android.fftdrawer;
  2. import android.graphics.Canvas;
  3. import android.graphics.Color;
  4. import android.graphics.Paint;
  5. import java.util.ArrayList;
  6. public class BarChart implements Animation {
  7. private final int length;
  8. private ArrayList<Bar> bars = null;
  9. private Paint paint;
  10. private int backgroundColor;
  11. public BarChart(int length){
  12. this.length = length;
  13. bars = new ArrayList<>();
  14. paint = new Paint();
  15. paint.setAntiAlias(true);
  16. backgroundColor = Color.rgb(0,0,0);
  17. }
  18. public void newValues(double[] values){
  19. bars.clear();
  20. for(int i = 0; i < length; i++){
  21. float tmp = (float) values[i];
  22. bars.add(new Bar(tmp, i));
  23. }
  24. }
  25. @Override
  26. public void Draw(Canvas canvas) {
  27. paint.setStyle(Paint.Style.FILL);
  28. canvas.drawColor(backgroundColor);
  29. // find max
  30. float maxValue = 0;
  31. for(Bar b : bars){
  32. maxValue = maxValue >= b.getValue() ? maxValue : b.getValue();
  33. }
  34. for(Bar b : bars){
  35. paint.setColor(b.getColor());
  36. float width = canvas.getWidth();
  37. float heigth = canvas.getHeight();
  38. float widthOfBar = width / length;
  39. float left= b.getHarmonics() * widthOfBar;
  40. float top = heigth - heigth * b.getValue() / maxValue;
  41. float rigth = (b.getHarmonics()+1) * widthOfBar;
  42. float buttom = heigth;
  43. canvas.drawRect(left, top, rigth ,buttom, paint);
  44. }
  45. }
  46. @Override
  47. public void SetBackgroundColor(int c) {
  48. backgroundColor = c;
  49. }
  50. }