【问题标题】:Drawing in threads在线程中绘图
【发布时间】:2011-08-22 05:29:11
【问题描述】:

我正在开发一个绘制地图的应用程序。

目前我的逻辑是这样的:

1) 我有一个包含图层集合(图块、线条、正方形等)的活动。

2) 在活动中显示一个包含画布的视图。

3) 然后在这个视图中我称之为“RenderAll”。发生的事情是我遍历所有层并在每一层上调用一个渲染过程。我将画布发送到我的渲染器,然后在画布上绘制东西。完成后,onDraw 会在我的视图上调用,并且图像已完成并在视图中绘制。

我想要的是我的每一层都单独绘制。意思是,我必须绘制不同的线程。这样当我的地图移动时,首先绘制瓷砖,然后绘制线条等等。我还需要通过移动我的地图来取消任务。

有人可以指点我一个很好的教程如何做到这一点吗?我是多线程的新手...

谢谢。

【问题讨论】:

    标签: java android multithreading canvas drawing


    【解决方案1】:

    首先,请阅读:http://download.oracle.com/javase/tutorial/essential/concurrency/

    然后重新考虑您的设计。您真的要移动街道名称然后移动街道吗?请记住:这可能需要一些时间,因此用户会在几秒钟内看到“错误”的图片。还有更多:你有多少层?如果层数可能会增加(例如自定义标题、商店名称等),那么您设计中的线程数也会增加,这似乎不是一个好主意。

    为什么不使用一个绘制线程来顺序绘制所有图层?它可能比多线程解决方案运行得更快,而且绝对更容易实现。

    【讨论】:

    • 嘿!实际上,您描述的问题不会发生。目前,当我平移地图时,所有图层都会在画布中渲染和绘制。我得到一个新图像,然后我会显示。我想先显示瓷砖,然后再显示其他图层(按某种顺序)。如果我在渲染仍在工作时平移地图,我想取消任务然后重新渲染。你有关于你的“顺序”提案的任何例子吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-08
    • 1970-01-01
    • 2011-11-09
    • 1970-01-01
    • 2012-11-19
    • 1970-01-01
    相关资源
    最近更新 更多