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()