如何在 onDraw 方法中调试 Canvas 上的绘图?

Ale*_* R. 3 android

我正在实现我的自定义视图,我onDraw()在其中覆盖方法以绘制一些对象集。

对象应该放置在以特定方式评​​估的坐标中。放置这些对象的代码工作不正确(其中一些根本没有绘制或被其他对象覆盖),因此我需要进行一些调试以逐行执行它并观察实际绘制的内容-步。

然而,据我所知,在所有绘图完成后,实际图片显示在屏幕上,因为当我执行canvas.drawBitmapline 时,我的模拟器屏幕上没有出现任何内容。

我的问题是:调试onDraw()代码的最佳(或者可能是唯一的)方法是什么?我在 Adroid 开发门户和这里发布的问题中做了一些研究,但无法找到解决方案。

Rob*_*ams 5

没试过这个,但它应该让你走上正轨:

  • 在 onDraw 方法开始时,使用画布的宽度和高度制作一个新的位图
  • 从位图制作新画布
  • 在此画布上运行您的绘图调用
  • 您可以从 Android Studio 调试器检查位图,并且会随着每次绘制调用而更新
  • 如果您还想将数据绘制到屏幕上,您可以在原始 Canvas 上使用带有完整位图的 drawBitmap,但这不需要用于调试

不要把它留在生产代码中

@Override
public void onDraw(Canvas canvas) {
    Bitmap screenBitmap = Bitmap.createBitmap(canvas.getWidth(), canvas.getHeight(), Bitmap.Config.ARGB_8888);
    Canvas screenCanvas = new Canvas(screenBitmap);

   /* Run draw calls on screenCanvas, inspect screenBitmap for result*/
}
Run Code Online (Sandbox Code Playgroud)