-1
我試圖在我的應用程序中實現一個波形可視化器,它從實時音頻輸入在畫布上繪製波形。 (以下屏幕截圖)如何逐漸增加Canvas的寬度?
我需要做的就是讓它可以從左到右水平滾動。
我想我應該使用HorizontalScrollView
並使畫布的寬度逐漸增長,以便它跨越屏幕寬度。現在我想知道如何實現這一目標?
我試圖在我的應用程序中實現一個波形可視化器,它從實時音頻輸入在畫布上繪製波形。 (以下屏幕截圖)如何逐漸增加Canvas的寬度?
我需要做的就是讓它可以從左到右水平滾動。
我想我應該使用HorizontalScrollView
並使畫布的寬度逐漸增長,以便它跨越屏幕寬度。現在我想知道如何實現這一目標?
保持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()
。