Java 如何制作均衡器的布局?

Java 如何制作均衡器的布局?,java,android,equalizer,Java,Android,Equalizer,这是我用来设置5频段均衡器的代码,但我希望有一个布局,它支持设备支持的均衡器频段数量 目前,我已经对均衡器频带的大小进行了硬编码,因为我不知道如何为均衡器频带的非常量值创建布局 这是我想使用的代码: equalizer.getNumberOfBands()//它告诉您设备中均衡器的数量。 但是如果一台设备支持+10个均衡器频带,我如何在屏幕上安装这些频带 创建均衡器的代码 private void setupEqualizer(){ mEqualizer = new Equalizer

这是我用来设置5频段均衡器的代码,但我希望有一个布局,它支持设备支持的均衡器频段数量

目前,我已经对均衡器频带的大小进行了硬编码,因为我不知道如何为均衡器频带的非常量值创建布局

这是我想使用的代码:

equalizer.getNumberOfBands()//它告诉您设备中均衡器的数量。

但是如果一台设备支持+10个均衡器频带,我如何在屏幕上安装这些频带

创建均衡器的代码

private void setupEqualizer(){

    mEqualizer = new Equalizer(0, mediaPlayer.getAudioSessionId());

    final short lowerEqualizerBandLevel = mEqualizer.getBandLevelRange()[0];
    final short upperEqualizerBandLevel = mEqualizer.getBandLevelRange()[1];

    for (short i = 0; i < 5; i++){
        final short equalizerBandIndex = i;

        int freq_range = mEqualizer.getCenterFreq(equalizerBandIndex);

        verticalSeekbar[i].setMax(upperEqualizerBandLevel - lowerEqualizerBandLevel);
        verticalSeekbar[i].setProgress(mEqualizer.getBandLevel(equalizerBandIndex));

        verticalSeekbar[i].setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean b) {
                mEqualizer.setBandLevel(equalizerBandIndex, (short) (progress + lowerEqualizerBandLevel ));
                slider_value[equalizerBandIndex].setText(String.valueOf((progress + lowerEqualizerBandLevel) / 100 + " dB"));
            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {

            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {

            }
        });
        slider_labels[i].setText(formatBandLabel(freq_range));

        float scale2 = getResources().getDisplayMetrics().density;
        int dpAsPixels2 = (int) (8*scale2 + 0.5f);

    }
    setupEqSpinner();
}
private void设置均衡器(){
mEqualizer=新均衡器(0,mediaPlayer.getAudioSessionId());
最终短LowerQualifizerBandLevel=mEqualizer.getBandLevelRange()[0];
final short upperequalizer rbandlevel=mEqualizer.getBandLevelRange()[1];
用于(短i=0;i<5;i++){
最终短均衡器B指数=i;
int freq_range=mEqualizer.getCenterFreq(均衡器和索引);
垂直seekbar[i].setMax(上均衡器带宽电平-下均衡器带宽电平);
verticalSeekbar[i].setProgress(mEqualizer.getBandLevel(equalizerBandIndex));
verticalSeekbar[i].setOnSeekBarChangeListener(新建SeekBar.OnSeekBarChangeListener()){
@凌驾
public void onProgressChanged(SeekBar-SeekBar、int-progress、布尔b){
mEqualizer.setBandLevel(均衡器BandIndex,(短)(进度+较低的再评定等级));
滑块值[equalizerBandIndex].setText(String.valueOf((进度+LowereQualifizerBandLevel)/100+“dB”);
}
@凌驾
开始跟踪触摸时的公共无效(SeekBar SeekBar){
}
@凌驾
TopTrackingTouch(SeekBar SeekBar)上的公共无效{
}
});
滑块标签[i].setText(formatBandLabel(频率范围));
float scale2=getResources().getDisplayMetrics().density;
int dpAsPixels2=(int)(8*scale2+0.5f);
}
setupEqSpinner();
}
您需要使用Nilesh告诉您的垂直搜索栏


创建一个
线性布局(水平)
并在for循环中向其添加Vertical Seekbar
numberOfBands
)。

听起来您希望以编程方式构建布局。是的,我正在这样做,但我的问题是,在屏幕上安装所有波段的建议方法是什么?请参阅@Henry Check edit,这就是我现在拥有的,但是如果有超过5个波段呢?但是如果我给一个正常的seekbar加上旋转,使其垂直,它就不起作用了?有什么区别吗?没有,它的拇指有问题。如果一个设备有超过5个频带呢?如果我做一个水平的线性布局,一个带有10+条带的设备如何安装?这实际上是我的问题。添加一个水平滚动视图,以便LinearLayout可以在其中滚动。如果你对答案感到满意,就接受并喜欢它。
equalizer.getNumberOfBands() // it tells the number of equalizer ..