1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- 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<Bar> 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;
- }
- }
|