Android仿网易云音乐播放页面 背景虚化碟片效果

这篇博客详细介绍了如何在Android中模仿网易云音乐播放页面的背景虚化、碟片合成、碟片旋转和指针旋转效果。背景虚化通过专辑封面模糊处理实现;碟片合成涉及三个Bitmap的合成技术;碟片和指针的旋转利用了ObjectAnimator进行动画控制,音乐播放和暂停时相应调整碟片和指针的旋转状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、效果图

仿网易云音乐播放页面,主要有4个关键点:

  • 背景虚化。获取音乐的专辑封面,将此图片作为背景图,并进行模糊虚化处理
  • 碟片合成。获取音乐的专辑封面,和黑色碟片图片进行合成
  • 碟片旋转。音乐播放时,碟片顺时针360度旋转;音乐暂停,旋转暂停
  • 指针旋转。音乐播放时,指针放到碟片上;音乐暂停,指针抬起

仿网易云音乐播放页面

2、背景虚化

工具类

public class BlurUtil {
   

    private static final String TAG = BlurUtil.class.getSimpleName();

    /**
     * 对图片进行毛玻璃化
     * @param sentBitmap 位图
     * @param radius 虚化程度
     * @param canReuseInBitmap 是否重用
     * @return 位图
     */
    public static Bitmap doBlur(Bitmap sentBitmap, int radius, boolean canReuseInBitmap) {

        Bitmap bitmap;
        if (canReuseInBitmap) {
            bitmap = sentBitmap;
        } else {
            bitmap = sentBitmap.copy(sentBitmap.getConfig(), true);
        }

        if (radius < 1) {
            return (null);
        }

        int w = bitmap.getWidth();
        int h = bitmap.getHeight();

        int[] pix = new int[w * h];
        bitmap.getPixels(pix, 0, w, 0, 0, w, h);

        int wm = w - 1;
        int hm = h - 1;
        int wh = w * h;
        int div = radius + radius + 1;

        int r[] = new int[wh];
        int g[] = new int[wh];
        int b[] = new int[wh];
        int rsum, gsum, bsum, x, y, i, p, yp, yi, yw;
        int vmin[] = new int[Math.max(w, h)];

        int divsum = (div + 1) >> 1;
        divsum *= divsum;
        int dv[] = new int[256 * divsum];
        for (i = 0; i < 256 * divsum; i++) {
            dv[i] = (i / divsum);
        }

        yw = yi = 0;

    
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值