package com.feemers.android.fftdrawer; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import java.util.ArrayList; public class BarChart implements Animation { private final int length; private ArrayList bars = null; private Paint paint; private int backgroundColor; public BarChart(int length){ this.length = length; bars = new ArrayList<>(); paint = new Paint(); paint.setAntiAlias(true); backgroundColor = Color.rgb(0,0,0); } public void newValues(double[] values){ bars.clear(); for(int i = 0; i < length; i++){ float tmp = (float) values[i]; bars.add(new Bar(tmp, i)); } } @Override public void Draw(Canvas canvas) { paint.setStyle(Paint.Style.FILL); canvas.drawColor(backgroundColor); // find max float maxValue = 0; for(Bar b : bars){ maxValue = maxValue >= b.getValue() ? maxValue : b.getValue(); } for(Bar b : bars){ paint.setColor(b.getColor()); float width = canvas.getWidth(); float heigth = canvas.getHeight(); float widthOfBar = width / length; float left= b.getHarmonics() * widthOfBar; float top = heigth - heigth * b.getValue() / maxValue; float rigth = (b.getHarmonics()+1) * widthOfBar; float buttom = heigth; canvas.drawRect(left, top, rigth ,buttom, paint); } } @Override public void SetBackgroundColor(int c) { backgroundColor = c; } }