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