参考文章:
blog.csdn.net/jasper_succ…
blog.csdn.net/xiangzhihon…
blog.csdn.net/lzq33521/ar…
效果图
资源1(当前用的是这个)
资源2
思路:准备2张图片,1张是圆盘碟片,1张是指针图片。播放的时候圆盘碟片开始旋转,指针图片旋转一定角度到圆盘碟片上;暂停则圆盘碟片停止旋转,指针图片旋转一定角度离开圆盘碟片图片,再次播放的时候圆盘碟片是恢复上次旋转的角度,调用resume方法。
<ImageView
android:id="@+id/iv_album_bg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/album_bg" />
<ImageView
android:id="@+id/iv_album_pointer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="30dp"
android:layout_marginRight="5dp"
android:layout_alignParentEnd="true"
android:layout_alignParentBottom="true"
android:src="@drawable/album_pointer" />复制代码
ObjectAnimator mAlbumAnimator;
ObjectAnimator mAlbumPointerAnimator;
protected void onCreate(@Nullable Bundle savedInstanceState) {
initAnim();}
private void initAnim() {
//专辑圆圈的动画
mAlbumAnimator = ObjectAnimator.ofFloat(mAlbumBgIv, "rotation", 0f, 360f);
mAlbumAnimator.setDuration(10000);
mAlbumAnimator.setRepeatCount(-1);
mAlbumAnimator.setRepeatMode(ValueAnimator.RESTART);//动画重复模式
mAlbumAnimator.setInterpolator(new LinearInterpolator());//匀速旋转
}
private void onMediaPlayingChanged(AppManager.MediaState mediaState) {
boolean isPlaying = mediaState.isPlaying;
if (isPlaying) {
albumPointAnimPlay();
if (mAlbumAnimator.isPaused()){
mAlbumAnimator.resume();
}
if (!mAlbumAnimator.isRunning()){
mAlbumAnimator.start();
}
} else {
albumPointAnimPause();
mAlbumAnimator.pause();
}
}
//指针
private void albumPointAnimPause() {
Log.d(TAG, "albumPointAnimPause: " + mAlbumPointerIv.getRotation());
mAlbumPointerAnimator = ObjectAnimator.ofFloat(mAlbumPointerIv, "rotation", mAlbumPointerIv.getRotation(), -30f);
mAlbumPointerAnimator.setDuration(1000);
mAlbumPointerAnimator.start();
}
private void albumPointAnimPlay() {
Log.d(TAG, "albumPointAnimPause: " + mAlbumPointerIv.getRotation());
mAlbumPointerAnimator = ObjectAnimator.ofFloat(mAlbumPointerIv, "rotation", mAlbumPointerIv.getRotation(), 0);
mAlbumPointerAnimator.setDuration(1000);
mAlbumPointerAnimator.start();
}
复制代码