Android仿网易云音乐:留声机效果

参考文章:

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();
}
复制代码



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值