android频响曲线图,EQ 频响曲线

这是一个关于如何在Android中实现EQ(均衡器)频响曲线的代码示例。`GainView`类用于绘制增益曲线,通过更新增益值来改变曲线形状。代码中涉及到画布操作、路径绘制、贝塞尔曲线计算等技术。

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

import android.annotation.SuppressLint;

import android.content.Context;

import android.graphics.Canvas;

import android.graphics.Color;

import android.graphics.Paint;

import android.graphics.Path;

import android.graphics.PointF;

import android.util.AttributeSet;

import android.util.Log;

import android.view.View;

import java.util.ArrayList;

import java.util.List;

/**

*

* 画EQ(均衡器)频响曲线

*/

public class GainView extends View {

private static final String TAG = "GainView";

private int[] mGains;

private Paint mPain;

public GainView(Context context) {

this(context, null);

}

public GainView(Context context, AttributeSet attrs) {

this(context, attrs, 0);

}

public GainView(Context context, AttributeSet attrs, int defStyle) {

super(context, attrs, defStyle);

//8个点,对应8个频段

mGains = new int[]{0, 0, 0, 0, 0, 0, 0, 0};

mPain = new Paint();

}

//更新增益曲线

public void updateGain(int index, int gain) {

mGains[index] = gain;

postInvalidate();

}

//横纵坐标

private int[] getXIndex() {

int[] xs = new int[8];

int realWidth = getWidth() - getPaddingLeft() - getPaddingRight();

int step = realWidth / (xs.length - 1);

for (int i = 0; i < xs.length; i++) {

xs[i] = step * i;

}

return xs;

}

@SuppressLint("DrawAllocation")

@Override

protected void onDraw(Canvas canvas) {

super.onDraw(canvas);

int[] gains = new int[mGains.length];

for (int i = 0; i < mGains.length; i++) {

gains[i] = -mGains[i];

}

int[] xs = getXIndex();

int[] ys = new int[xs.length];

int half_height = (getHeight() - getPaddingTop() - getPaddingBottom()) / 2;

for (int i = 0; i < ys.length; i++) {

ys[i] = half_height * gains[i] / 12 + half_height;

}

double min = Double.MAX_VALUE;

double max = Double.MIN_VALUE;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值