android 音乐播放器专辑图片旋转,Android实现网易云音乐的旋转专辑View
时间: 2024-03-05 16:52:41 浏览: 115
要实现 Android 音乐播放器专辑图片旋转效果,可以使用自定义 View 来实现。下面是一个简单的实现方式:
1. 创建一个自定义 View,继承自 ImageView。
2. 在 View 的构造函数中初始化属性动画,用于控制图片旋转的动画效果:
```
public class AlbumView extends ImageView {
private ObjectAnimator mAnimator;
public AlbumView(Context context) {
this(context, null);
}
public AlbumView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public AlbumView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
initAnimator();
}
private void initAnimator() {
mAnimator = ObjectAnimator.ofFloat(this, "rotation", 0f, 360f);
mAnimator.setDuration(10000);
mAnimator.setRepeatCount(ValueAnimator.INFINITE);
mAnimator.setInterpolator(new LinearInterpolator());
}
}
```
3. 在播放音乐时,启动动画:
```
mAlbumView.startAnimation();
```
4. 在停止播放时,停止动画:
```
mAlbumView.stopAnimation();
```
5. 在 View 的 onDraw() 方法中绘制圆形的边框和专辑图片:
```
@Override
protected void onDraw(Canvas canvas) {
if (mDrawable != null) {
int width = getWidth();
int height = getHeight();
int radius = Math.min(width, height) / 2;
// 绘制圆形边框
Paint paint = new Paint();
paint.setColor(Color.WHITE);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(2);
canvas.drawCircle(width / 2, height / 2, radius, paint);
// 绘制专辑图片
canvas.save();
canvas.rotate(mRotation, width / 2, height / 2);
mDrawable.setBounds(width / 2 - radius, height / 2 - radius, width / 2 + radius, height / 2 + radius);
mDrawable.draw(canvas);
canvas.restore();
} else {
super.onDraw(canvas);
}
}
```
6. 在 View 的 startAnimation() 和 stopAnimation() 方法中启动和停止属性动画:
```
public void startAnimation() {
if (mAnimator != null && !mAnimator.isRunning()) {
mAnimator.start();
}
}
public void stopAnimation() {
if (mAnimator != null && mAnimator.isRunning()) {
mAnimator.cancel();
}
}
```
这样就可以实现 Android 音乐播放器专辑图片旋转效果了。当然,这只是一个简单的实现方式,你可以根据自己的需求进行修改和优化。
阅读全文