Android 如何逐渐增加画布的宽度?

Android 如何逐渐增加画布的宽度?,android,android-canvas,android-drawable,Android,Android Canvas,Android Drawable,我正在尝试在我的应用程序中实现一个波形可视化工具,它从实时音频输入在画布上绘制波形。(以下截图) 我需要做的是使它能够从左到右水平滚动 我想我应该使用一个水平滚动视图,让画布逐渐变宽,这样就可以跨越屏幕宽度。现在我想知道如何才能做到这一点 保持画布的宽度相同,并在实际绘制时使用Canvas.translate()方法 因此,假设您有一个Rect Rect,其中包含要绘制的矩形(其边界可能超过视图的边界),以及int horizontalpoffset=0作为保存绘制矩形偏移量的变量,该偏移量将在

我正在尝试在我的应用程序中实现一个波形可视化工具,它从实时音频输入在画布上绘制波形。(以下截图)

我需要做的是使它能够从左到右水平滚动

我想我应该使用一个
水平滚动视图
,让画布逐渐变宽,这样就可以跨越屏幕宽度。现在我想知道如何才能做到这一点


保持
画布的宽度相同,并在实际绘制时使用
Canvas.translate()
方法

因此,假设您有一个
Rect Rect
,其中包含要绘制的矩形(其边界可能超过
视图的边界),以及
int horizontalpoffset=0
作为保存绘制矩形偏移量的变量,该偏移量将在用户触摸
视图时进行调整

现在,当调用
onDraw(Canvas)
时:

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

    canvas.save(); 
    canvas.translate(horizontalOffset, 0); 
    canvas.drawRect(rect, paint);
    canvas.restore();
}
然后,您可以覆盖
onTouch(视图,运动事件)
以基于触摸事件计算水平偏移,然后
invalidate()
视图

注意:这显然只是在画一个
Rect
,但是你应该能够修改我在那里所做的来画你正在画的任何东西。重要的部分是(按顺序)
save()
translate()
draw
restore()