代码之家  ›  专栏  ›  技术社区  ›  Vince VD

如何制作均衡器的布局?

  •  -4
  • Vince VD  · 技术社区  · 7 年前

    这是我用来设置的代码 5波段均衡器 但是我想要一个 布局 它支持设备支持的均衡器带数。

    现在我有 硬编码的 大小 均衡器频带 因为我不知道如何创建 布局 对于均衡器频带的非常量值。

    这是我要使用的代码:

    equalizer.getNumberOfBands(); //it tells you the number of equalizer in device.

    但是如果一个设备支持 +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();
    }
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   Zar E Ahmer    7 年前

    你需要使用 垂直搜索栏 正如所说的 尼利什

    equalizer.getNumberOfBands() // it tells the number of equalizer ..
    

    创建 LinearLayout(Horizontal) 添加V 直立导杆 在for循环中( numberOfBands