请原谅这个模糊的问题,但我是 android 和 java 的新手,而且我读过的关于这个主题的所有东西都只提供了 xml 代码示例,这对我来说没有用,因为我正在以编程方式做所有事情。
所以我有一个绘制乐谱的应用程序,然后随着音乐的播放,我需要在当前播放的音符上覆盖某种光标(可以的矩形框),卡拉 OK 风格。
我创建这样的视图
Globals.mMainView = new MainView(context);
Globals.mMainView.setLayoutParams(new LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.WRAP_CONTENT, 60));
layout.addView(Globals.mMainView);
我将视图引用保存在全局中,以便以后找到它,(是的,我知道 Java 警察此时会来找我,但我以后可以找到更优雅的解决方案)。请注意,我的视图位于线性布局中,因为它旁边有另一个不相关的视图。
在主线程中绘制 onDraw 可以很好地渲染乐谱。
所以,当我按下播放按钮时,我会启动其中一个
class Play1Activity extends AsyncTask<String, Integer, Boolean>
并在 doInBackground 中播放音频并定期调用具有播放位置的 publishProgress ,这反过来会导致 onProgressUpdate 在 UI 线程中运行,我认为它可以安全地进行绘图
现在,我想在主视图之上绘制一些东西(我有一个参考 Globals.mMainView),而不必重新绘制整个视图以节省 CPU 并使动画看起来不错。在 Windows 中,我可以绘制一个带有 XOR 标志的矩形,它反转我感兴趣的分数部分,然后再次执行相同的操作以取消绘制它,然后在下一个位置绘制。
在这一点上,我对android一无所知。也许有人可以建议我遵循的最佳路径。谢谢