我希望在播放音乐时实现一个正在填充的播放/暂停按钮。我的第一次尝试是创建一个以20 FPS(每50毫秒)触发并在我的按钮上调用View.invalidate()
的计时器。该按钮本身有一个客户onDraw(...)
方法,现在只能静态地将一个位图绘制到画布上。
然而,然后在模拟器中运行它(我使用GenyMotion)我立即注意到声音在摇晃,好像CPU无法处理它。
我是Android的初学者,所以在以不同的方式进行实验之前,我想知道,在音乐播放时,推荐使用按钮设置动画的方法是什么?
答案 0 :(得分:1)
建议我想:
handler.postDelayed()
Android上有一个漂亮的示例代码,“如何使用SurfaceView制作简单的原生游戏”,使用线程和预加载位图,称为LunarLander。
如果查看LunarView.java代码,他们使用的是名为LunarThread
的线程,该线程是在LunarView
的构造函数上创建的,并以surface is created开头。
它在LunarThread
里面,他们正在执行所有繁重的任务甚至绘图(在线程的内部运行方法中)。
LunarView的基本OverView:
LunarThread
,它预先加载位图并执行相关任务mRun
值发生变化。mRun
值更改或表面被破坏(在surfaceDestroyed(SurfaceHolder holder)
方法内停止线程)使用SurfaceView,你会发现不同。