最近写了一个音乐频谱显示效果的自定义view,通过Visualizer 函数对接了MediaPlayer的声源byte数据的回调,全部封装到了view的里面,外部只需要设置一个MediaPlayer即可,API-> setMediaPlayer() 外层设置路径 播放之后 自动显示频谱效果,目前只做了下图一种效果,以后还会更新其它的效果。如果有赶工期或者正好碰到类似效果需求的同伴们可以直接改改来用,见下图:

然后直接上完整代码:
/**
* author by LiuGuo
* on 2021/4/13
* 自定义组件:音乐频谱显示组件
* API-> setMediaPlayer() 外层设置路径 播放之后 自动显示频谱效果
*/
public class MusicFrequencyView extends View {
private int widthsize;
private int heightsize;
private Paint paint;
int count = -1;
float mCount = 0;
int count1 = -1;
float mCount1 = 0;
int count2 = -1;
float mCount2 = 0;
int count3 = -1;
float mCount3 = 0;
int count4 = -1;
float mCount4 = 0;
int count5 = -1;
float mCount5 = 0;
boolean isUp = false;
boolean isUp1 = false;
boolean isUp2 = false;
boolean isUp3 = false;
boolean isUp4 = false;
boolean isUp5 = false;
int[] voiceData = new int[6];
private Visualizer visualizer;
private int currentFrequency;
private int mCurrentFrequency;
private int currentVolume;
private final int itemColor;
private Paint paint1;
private float mi;
public MusicFrequencyView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.musicView);
itemColor = ta.getColor(R.styleable.musicView_itemColor, Color.parseColor("#000000"));
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
widthsize = MeasureSpec.getSize(widthMeasureSpec);
heightsize = MeasureSpec.getSize(heightMeasureSpec);
setMeasuredDimension(widthsize, heightsize);
init();
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Log.e("onDrawonDraw", "" + heightsize + "==" + widthsize);
Log.e("mCountmCount", "" + count);
if (count <= 0) count = 0;
if (count1 <= 0) count1 = 0;
if (count2 <= 0) count2 = 0;
if (count3 <= 0) count3 = 0;
if (count4 <= 0) count4 = 0;
if (count5 <= 0) count5 = 0;
mCount = heightsize / 1.04895f - count;
RectF rectF = new RectF(widthsize / 5.8f, mCount, widthsize / 4.46154f, heightsize / 1.04895f);
mCount1

本文介绍了一个使用Java编写的自定义View组件,用于显示音乐频谱效果。该组件通过Visualizer获取MediaPlayer的音频数据,并实时绘制频谱。代码实现了对外部MediaPlayer的自动适配,只需设置播放路径即可显示频谱。此外,提供了完整的代码示例和配置说明,方便开发者直接使用或作为参考进行二次开发。
最低0.47元/天 解锁文章
930

被折叠的 条评论
为什么被折叠?



