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;