想实现类似网易云音乐的播放专辑封面的效果,点击播放按钮时无限的旋转,点击暂停,则图片暂停。
开始想用animation来实现,后发现animation不能实现暂停,继续的效果,图片会重头开始转,要实现这个效果可以通过线程来实现
线程代码如下,通过setSuspend方法,可以设置线程是否暂停或启动,监听播放按钮的点击事件,播放时setSuspend(fase),暂停时,setSuspend(true),即可实现旋转与暂停的效果
/**
* 专辑封面 旋转线程
*/
class PlayThread extends Thread{
private boolean suspend = false; //默认运行
private String control = ""; // 只是需要一个对象而已,这个对象没有实际意义
public void setSuspend(boolean suspend) {
if (!suspend) {
synchronized (control) {
control.notifyAll();
}
}
this.suspend = suspend;
}
public boolean isSuspend() {
return this.suspend;
}
public void run() {
while (true) {
album.setDegree(album.getDegree() + 0.5f);
try {
Thread.sleep(20);
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized (control) {
if (suspend) {
try {
control.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
}