2014-09-02 143 views
-1

我試圖在我的應用程序中實現一個波形可視化器,它從實時音頻輸入在畫布上繪製波形。 (以下屏幕截圖)如何逐漸增加Canvas的寬度?

我需要做的就是讓它可以從左到右水平滾動。

我想我應該使用HorizontalScrollView並使畫布的寬度逐漸增長,以便它跨越屏幕寬度。現在我想知道如何實現這一目標?

enter image description here

回答

0

保持Canvas的寬度相同,並使用canvas.translate()方法實際繪製時。

所以,讓我們說你有一個Rect rect包含矩形繪製(其邊界可能超過View的),以及int horizontalOffset = 0作爲變量抱着你繪製矩形的偏移量將被調整爲用戶觸及View

現在,當onDraw(Canvas)叫做:

@Override 
public void onDraw(Canvas canvas){ 
    super.onDraw(canvas); 

    canvas.save(); 
    canvas.translate(horizontalOffset, 0); 
    canvas.drawRect(rect, paint); 
    canvas.restore(); 
} 

然後你就可以覆蓋onTouch(View, MotionEvent)計算基於觸摸事件的水平偏移,然後invalidate()View

注意:這顯然只是畫一個Rect,但你應該能夠修改我在那裏畫的任何東西來繪製你正在繪製的任何東西。重要部分是(按順序)save(),translate(),draw,restore()