2015-02-04 12 views
0

내 응용 프로그램에서 this visualizerView를 사용하고 있습니다. 나는 막대의 높이를 어떻게 높일 수 있는지 알고 싶다. 아래의 코드로VisualizerView에서 막대 높이 늘리기

public class BarGraphRenderer extends Renderer 
{ 
    private int mDivisions; 
    private Paint mPaint; 
    private boolean mTop; 

    /** 
    * Renders the FFT data as a series of lines, in histogram form 
    * @param divisions - must be a power of 2. Controls how many lines to draw 
    * @param paint - Paint to draw lines with 
    * @param top - whether to draw the lines at the top of the canvas, or the bottom 
    */ 
    public BarGraphRenderer(int divisions, 
          Paint paint, 
          boolean top) 
    { 
    super(); 
    mDivisions = divisions; 
    mPaint = paint; 
    mTop = top; 
    } 

    @Override 
    public void onRender(Canvas canvas, AudioData data, Rect rect) 
    { 
    // Do nothing, we only display FFT data 
    } 

    @Override 
    public void onRender(Canvas canvas, FFTData data, Rect rect) 
    { 
    for (int i = 0; i < data.bytes.length/mDivisions; i++) { 
     mFFTPoints[i * 4] = i * 4 * mDivisions; 
     mFFTPoints[i * 4 + 2] = i * 4 * mDivisions; 
     byte rfk = data.bytes[mDivisions * i]; 
     byte ifk = data.bytes[mDivisions * i + 1]; 
     float magnitude = (rfk * rfk + ifk * ifk); 
     int dbValue = (int) (10 * Math.log10(magnitude)); 

     if(mTop) 
     { 
     mFFTPoints[i * 4 + 1] = 0; 
     mFFTPoints[i * 4 + 3] = (dbValue * 2 - 10); 
     } 
     else 
     { 
     mFFTPoints[i * 4 + 1] = rect.height(); 
     mFFTPoints[i * 4 + 3] = rect.height() - (dbValue * 2 - 10); 
     } 
    } 

    canvas.drawLines(mFFTPoints, mPaint); 
    } 
} 

답변

0

시도

그냥 값을 변경

int size=3; 
if(mTop) 
    { 
    mFFTPoints[i * 4 + 1] = 0; 
    mFFTPoints[i * 4 + 3] = (dbValue * size - 10); 
    } 
    else 
    { 
    mFFTPoints[i * 4 + 1] = rect.height(); 
    mFFTPoints[i * 4 + 3] = rect.height() - (dbValue * size - 10); 
    } 
} 
당신은 VisualizerView 바 이것은 나를 위해 일한
+0

크기가 커지지 만 나눗셈 수가 변경됩니다. 나는 top = 6, bottom = 6으로 설정하려고합니다. 높이를 높이지 만 부서 수를 변경합니다. – Nepster

0

을 증가 값 (크기)을 변경할 수 있습니다

... (10입니다) 코드에서. 더 큰 가치. 나는 나를 위해 좋은 100을 사용했다. 희망이 도움이됩니다!

int dbValue = (int) (10 * Math.log10(magnitude));