Android 帮助我优化此图形动画

Android 帮助我优化此图形动画,android,graphics,animation,Android,Graphics,Animation,我需要一些帮助在我的Android手机上制作这个简单的动画。我是一个动画和图形新手 我将加速度计数据绘制为滑动时间序列窗口。读取新的加速计数据时,其数据绘制在右侧,将以前的数据推到左侧,如下所示: 我的程序运行得很顺利,但是我想得到一些优化动画的帮助。以下是我关注的主要问题: 我当前的实现在一个线程中读取所有加速度计数据,并将数据保存在固定大小的FIFO队列中,以捕获时间序列窗口的宽度。然后,我使用Timer.scheduleAtFixedRate()来绘制队列的全部内容,以便每隔50毫秒重新

我需要一些帮助在我的Android手机上制作这个简单的动画。我是一个动画和图形新手

我将加速度计数据绘制为滑动时间序列窗口。读取新的加速计数据时,其数据绘制在右侧,将以前的数据推到左侧,如下所示:

我的程序运行得很顺利,但是我想得到一些优化动画的帮助。以下是我关注的主要问题:

  • 我当前的实现在一个线程中读取所有加速度计数据,并将数据保存在固定大小的FIFO队列中,以捕获时间序列窗口的宽度。然后,我使用Timer.scheduleAtFixedRate()来绘制队列的全部内容,以便每隔50毫秒重新绘制整个图形。我能改进一下吗?我真的需要像这样经常重新绘制图表吗?在我见过的另一个类似的程序中,每个像素列被复制到左边的一个像素,沿着图形起伏;最新数据的列绘制在最右侧的像素列上。这样更好吗

  • 我在绘图线程中重新绘制了图例(左上角),该线程每50毫秒运行一次draw函数。有没有办法“保留”这个传说,而不是不断地重新绘制它


  • 任何其他帮助都将不胜感激。我听说过像双缓冲这样的优化,但我不知道这是否对我有帮助。

    如果图例和十字线只需要绘制一次,那么你应该将其放置到缓冲位图中。对于图形线,可以尝试使用路径对象绘制线。当有时间画直线时,只需画到适当的点,然后适当地翻译画布。如果

    你应该考虑使用40ms。50ms的速度为20fps,比眼睛记录的速度要小。因此,用户可能会遇到延迟或别名。如果你的应用程序管理25fps,这应该是一个经验法则选择的帧速率。你能详细介绍一下如何使用“缓冲区位图”来存储图例和十字线等静态内容吗?我不熟悉这种技术。另外,关于画布的翻译,这会比重画图表快吗?我知道看起来不是这样,我也很震惊。但出于某种原因,当我为我的绘画做所有的数学运算时,它比仅仅翻译画布花费了更长的时间。对于缓冲区,创建位图画布对,并在其中绘制图例和十字光标。然后,当你得到你的API画布时,只需在画布上绘制bitamp缓冲区。我将尝试转换方法,谢谢。现在,对于“缓冲区位图”,你是说我应该将图例和十字光标保存到预先绘制的位图中并绘制它?如果是这样,那么仍然需要在View.onDraw()方法中进行绘制,该方法经常被调用以执行动画,对吗?我希望我能以某种方式“修复”传说和十字准星,而不必不断地重新绘制它们。这是不可能的吗?绘制位图后,不需要继续重新绘制位图,除非希望更改绘制。不幸的是,您总是必须在画布上绘制位图,因为每次API onDraw(画布)调用都会得到一个新的画布。幸运的是,将图例和十字光标保留为位图将大大缩短绘制时间(而不是每次完全重新绘制)。Look>。这是一个关于android绘图的精彩教程。不幸的是,它不是基于图表的,但从中收集到的经验教训,你可以推断出你所需要的一切。