private void prepareViewForMode(boolean isCreatingLayout) { LinearLayout.LayoutParams lp; final Context ctx = getApplication(); updateEffects(); if (Player.bassBoostMode) { UI.animationReset(); UI.animationAddViewToHide(panelEqualizer); UI.animationAddViewToShow(panelSecondary); UI.animationCommit(isCreatingLayout, null); btnGoBack.setNextFocusDownId(R.id.chkBass); btnMenu.setNextFocusRightId(R.id.chkBass); btnMenu.setNextFocusDownId(R.id.chkBass); UI.setNextFocusForwardId(btnMenu, R.id.chkBass); btnChangeEffect.setNextFocusUpId(R.id.barVirtualizer); btnChangeEffect.setNextFocusLeftId(R.id.barVirtualizer); } else { if (btnChangeEffect != null) { UI.animationReset(); UI.animationAddViewToHide(panelSecondary); UI.animationAddViewToShow(panelEqualizer); UI.animationCommit(isCreatingLayout, null); } chkEqualizer.setChecked(Equalizer.isEnabled(audioSink)); final int bandCount = Equalizer.getBandCount(); if (bars == null || frequencies == null || bars.length < bandCount || frequencies.length < bandCount) initBarsAndFrequencies(bandCount); int availableScreenW = getDecorViewWidth(); int hMargin = getDecorViewHeight(); // some times, when rotating the device, the decorview takes a little longer to be updated if (UI.isLandscape != (availableScreenW >= hMargin)) availableScreenW = hMargin; hMargin = ((UI.isLandscape || UI.isLargeScreen) ? UI.spToPxI(32) : UI.spToPxI(16)); if (UI.usableScreenWidth > 0 && availableScreenW > UI.usableScreenWidth) availableScreenW = UI.usableScreenWidth; if (UI.isLargeScreen) { availableScreenW -= ((UI.getViewPaddingForLargeScreen() << 1) + (UI.controlLargeMargin << 1)); if (UI.isLandscape) availableScreenW >>= 1; } else { availableScreenW -= (UI.controlMargin << 1); } while (hMargin > UI._1dp && ((bandCount * UI.defaultControlSize) + ((bandCount - 1) * hMargin)) > availableScreenW) hMargin--; int size = 0, textSize = 0, bgY = 0, y = 0; if (hMargin <= UI._1dp) { // oops... the bars didn't fit inside the screen... we must adjust everything! hMargin = ((bandCount >= 10) ? UI._1dp : UI.controlSmallMargin); size = UI.defaultControlSize - 1; while (size > UI._4dp && ((bandCount * size) + ((bandCount - 1) * hMargin)) > availableScreenW) size--; textSize = size - (UI.controlMargin << 1) - (UI.strokeSize << 1) - (UI._1dp << 1); if (textSize < UI._4dp) textSize = UI._4dp; UI.textPaint.setTextSize(textSize); final FontMetrics fm = UI.textPaint.getFontMetrics(); final int box = (int) (fm.descent - fm.ascent + 0.5f); final int yInBox = box - (int) (fm.descent); bgY = (size - box) >> 1; y = bgY + yInBox; } if (panelBars == null) { panelBars = new LinearLayout(ctx); lp = new LinearLayout.LayoutParams( ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.MATCH_PARENT); panelBars.setLayoutParams(lp); panelBars.setOrientation(LinearLayout.HORIZONTAL); for (int i = 0; i < bandCount; i++) { final int level = Equalizer.getBandLevel(i, audioSink); final BgSeekBar bar = new BgSeekBar(ctx); bar.setVertical(true); final LinearLayout.LayoutParams p = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.MATCH_PARENT); if (i > 0) p.leftMargin = hMargin; bar.setLayoutParams(p); bar.setMax((max - min) / 10); bar.setText(format(frequencies[i], level)); bar.setKeyIncrement(10); bar.setValue( ((level <= LevelThreshold) && (level >= -LevelThreshold)) ? (-min / 10) : ((level - min) / 10)); bar.setOnBgSeekBarChangeListener(this); bar.setInsideList(true); if (size != 0) bar.setSize(size, textSize, bgY, y); bars[i] = bar; bar.setId(i + 1); bar.setNextFocusLeftId(i); bar.setNextFocusRightId(i + 2); UI.setNextFocusForwardId(bar, i + 2); bar.setNextFocusDownId(R.id.btnChangeEffect); bar.setNextFocusUpId(R.id.chkEqualizer); panelBars.addView(bar); } if (bars != null && bars.length > 0) bars[0].setNextFocusLeftId(R.id.chkEqualizer); panelEqualizer.addView(panelBars); } if (btnChangeEffect != null) { if (bars != null && bars.length > 0) { bars[bandCount - 1].setNextFocusRightId(R.id.btnChangeEffect); UI.setNextFocusForwardId(bars[bandCount - 1], R.id.btnChangeEffect); } btnGoBack.setNextFocusDownId(R.id.chkEqualizer); btnMenu.setNextFocusRightId(R.id.chkEqualizer); btnMenu.setNextFocusDownId(R.id.chkEqualizer); UI.setNextFocusForwardId(btnMenu, R.id.chkEqualizer); btnChangeEffect.setNextFocusUpId(bandCount); btnChangeEffect.setNextFocusLeftId(bandCount); } else { if (bars != null && bars.length > 0) { bars[bandCount - 1].setNextFocusRightId(R.id.chkBass); UI.setNextFocusForwardId(bars[bandCount - 1], R.id.chkBass); } chkBass.setNextFocusLeftId(bandCount); } chkEqualizer.setNextFocusRightId(1); chkEqualizer.setNextFocusDownId(1); UI.setNextFocusForwardId(chkEqualizer, 1); } }
@SuppressWarnings("deprecation") @Override protected void onCreateLayout(boolean firstCreation) { setContentView(R.layout.activity_effects); audioSink = Player.localAudioSinkUsedInEffects; panelControls = (LinearLayout) findViewById(R.id.panelControls); panelControls.setBackgroundDrawable(new ColorDrawable(UI.color_list)); panelEqualizer = (LinearLayout) findViewById(R.id.panelEqualizer); panelSecondary = (ViewGroup) findViewById(R.id.panelSecondary); if (panelSecondary instanceof ScrollView) { panelSecondary.setHorizontalFadingEdgeEnabled(false); panelSecondary.setVerticalFadingEdgeEnabled(false); panelSecondary.setFadingEdgeLength(0); } btnGoBack = (BgButton) findViewById(R.id.btnGoBack); btnGoBack.setOnClickListener(this); btnGoBack.setIcon(UI.ICON_GOBACK); chkEqualizer = (BgButton) findViewById(R.id.chkEqualizer); chkEqualizer.setOnClickListener(this); chkEqualizer.setTextColor(UI.colorState_text_listitem_reactive); chkEqualizer.formatAsLabelledCheckBox(); chkBass = (BgButton) findViewById(R.id.chkBass); chkBass.setOnClickListener(this); chkBass.setTextColor(UI.colorState_text_listitem_reactive); chkBass.formatAsLabelledCheckBox(); chkVirtualizer = (BgButton) findViewById(R.id.chkVirtualizer); chkVirtualizer.setOnClickListener(this); chkVirtualizer.setTextColor(UI.colorState_text_listitem_reactive); chkVirtualizer.formatAsLabelledCheckBox(); btnMenu = (BgButton) findViewById(R.id.btnMenu); btnMenu.setOnClickListener(this); btnMenu.setIcon(UI.ICON_MENU); btnChangeEffect = (BgButton) findViewById(R.id.btnChangeEffect); if (btnChangeEffect != null) { btnChangeEffect.setOnClickListener(this); btnChangeEffect.setCompoundDrawables( new TextIconDrawable( UI.ICON_EQUALIZER, UI.color_text_listitem, UI.defaultControlContentsSize), null, null, null); btnChangeEffect.setMinimumHeight(UI.defaultControlSize); btnChangeEffect.setTextColor(UI.colorState_text_listitem_reactive); } else { UI.isLargeScreen = true; Player.bassBoostMode = false; } barBass = (BgSeekBar) findViewById(R.id.barBass); barBass.setMax(BassBoost.getMaxStrength()); barBass.setValue(BassBoost.getStrength(audioSink)); barBass.setKeyIncrement(BassBoost.getMaxStrength() / 50); barBass.setOnBgSeekBarChangeListener(this); barBass.setInsideList(true); barBass.setAdditionalContentDescription(getText(R.string.bass_boost).toString()); barVirtualizer = (BgSeekBar) findViewById(R.id.barVirtualizer); barVirtualizer.setMax(Virtualizer.getMaxStrength()); barVirtualizer.setValue(Virtualizer.getStrength(audioSink)); barVirtualizer.setKeyIncrement(Virtualizer.getMaxStrength() / 50); barVirtualizer.setOnBgSeekBarChangeListener(this); barVirtualizer.setInsideList(true); barVirtualizer.setAdditionalContentDescription(getText(R.string.virtualization).toString()); LinearLayout.LayoutParams lp; if (!UI.isLargeScreen && UI.isLandscape) { if (btnChangeEffect != null) { lp = (LinearLayout.LayoutParams) btnChangeEffect.getLayoutParams(); lp.topMargin = 0; btnChangeEffect.setLayoutParams(lp); } lp = (LinearLayout.LayoutParams) chkEqualizer.getLayoutParams(); lp.bottomMargin = 0; chkEqualizer.setLayoutParams(lp); lp = (LinearLayout.LayoutParams) chkBass.getLayoutParams(); lp.bottomMargin = 0; chkBass.setLayoutParams(lp); lp = (LinearLayout.LayoutParams) chkVirtualizer.getLayoutParams(); lp.bottomMargin = 0; chkVirtualizer.setLayoutParams(lp); lp = (LinearLayout.LayoutParams) barBass.getLayoutParams(); lp.bottomMargin = UI.controlMargin; barBass.setLayoutParams(lp); lp = (LinearLayout.LayoutParams) barVirtualizer.getLayoutParams(); lp.bottomMargin = UI.controlMargin; barVirtualizer.setLayoutParams(lp); panelControls.setPadding( UI.controlLargeMargin, UI.thickDividerSize, UI.controlLargeMargin, 0); } else if (UI.isLargeScreen) { UI.prepareViewPaddingForLargeScreen( panelControls, 0, (screenNotSoLarge && !UI.isLandscape) ? UI.controlMargin : UI.controlLargeMargin); if (!UI.isLandscape && (panelControls instanceof LinearLayout)) { panelControls.setOrientation(LinearLayout.VERTICAL); panelControls.setWeightSum(0); final int margin = (screenNotSoLarge ? UI.controlMargin : (UI.controlLargeMargin << 1)); lp = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); lp.leftMargin = margin; lp.topMargin = margin; lp.rightMargin = margin; lp.bottomMargin = margin; panelSecondary.setLayoutParams(lp); lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, 0); lp.weight = 1; lp.leftMargin = margin; lp.topMargin = (screenNotSoLarge ? UI.controlLargeMargin : margin); lp.rightMargin = margin; lp.bottomMargin = margin; panelEqualizer.setLayoutParams(lp); if (screenNotSoLarge) { lp = (LinearLayout.LayoutParams) barBass.getLayoutParams(); lp.bottomMargin = UI.controlLargeMargin; barBass.setLayoutParams(lp); lp = (LinearLayout.LayoutParams) barVirtualizer.getLayoutParams(); lp.bottomMargin = UI.controlLargeMargin; barVirtualizer.setLayoutParams(lp); } } } else { panelControls.setPadding(UI.controlMargin, UI.thickDividerSize, UI.controlMargin, 0); } UI.prepareControlContainer(findViewById(R.id.panelTop), false, true); prepareViewForMode(true); }